楚新元 | All in R

Welcome to R Square

分享几个 R Skill

楚新元 / 2021-08-28


在博客里嵌入 ShinyApp

在博客中嵌入 ShinyApp 的大体过程如下:

  1. 先把你的 ShinyApp 发布到 shinyapps.io 上或者部署到云服务器上。

  2. 在 chunck 用 knitr::include_app("ShinyApp地址") 函数插入。

我最近开发的一款能自动生成 Word 文档的 ShinyApp 小程序,方便每周无聊的工作总结自动生成。这里提供一个普通用户访问权限,欢迎反馈意见和建议。

用户名:1080
密码:666666

沉浸在 RStudio 里,不出门实现英汉互译

鄙人写了一个 ecce 包专门干这事,不多说了,直接上代码

library(ecce)
translate("good")
## $Query
## [1] "good"
## 
## $Phonetic
## [1] "ɡʊd"
## 
## $WFS
##   wf.name wf.value
## 1    复数    goods
## 2  比较级   better
## 3  最高级     best
## 
## $Explains
## [1] "adj. 好的,优良的;能干的,擅长的;好的,符合心愿的;令人愉快的,合意的;(心情)愉快的;迷人的,漂亮的;可能会成功的,可能正确的;合适的,方便的;有益的,有好处的,有用的;温顺的,乖的,有礼貌的;虔诚的,遵守规则(或约定)的;健康的,健全的;状况好的;助人为乐的,心地善良的,好心的;符合道德的,正派的,高尚的;(数量或程度)相当大的,相当多的;很,非常;彻底的,完全的;合情理的,有说服力的,有充分根据的;划算的,收益可观的;赞同的,赢得赞许的,令人尊敬的;(用于表示回应)好的;表示惊讶、生气或者加强语气;(用于打招呼)好;至少,不少于;有趣的,逗笑的;在…时间内有效,非伪造的;(比赛中打的球)好的,有效的,可以得分的;(踢、射、投)命中;能提供……的;足够支付的;上流的,高贵的;(衣服)时髦的,适合正式场合穿着的;亲密的,友好的;尤指以屈尊俯就或幽默的方式好(人);有……意向的;够了,到此为止了;精确的,准确的"
## [2] "n. 合乎道德的行为,正直的行为,善行;对的事情(the good);好事(the good);好的方面;好结果;有道德的人,高尚的人,好人(the good);用处,益处,利益;商品,所有物;<英>(与乘客相区别的)待运货物(goods);私人财物(goods);<非正式>真货,正品(the goods)"                                                 
## [3] "adv. <非正式>好地;<美>彻底地,完全地"                            
## [4] "【名】 (Good)(英)古德,(瑞典)戈德(人名)"

这些内容还不够,一行命令打开网页看

translate_view("good")

给汉字标注拼音

pinyin("我爱计量经济学。")

更多内容请看这里 https://cxy.rbind.io/ecce/

用 R 语言提取 Word 文档中的表格数据

语言读取数据来源一般有.csv、.xls或.xlsx、.txt和各种数据库等。其中R从Excel读取数据推荐 readxl 和 openxlsx 包,其他格式的数据一般 rio 包轻松搞定,这里不多介绍,看帮助文档即可。一般数据分享很少有通过 Word 作为载体的,但有些时候我们确实需要从 Word 文档里读取一些数据,这里推荐一个神奇的包 docxtractr。下面我给出示例代码供参考:

library(docxtractr)
doc = read_docx("path/to/xxxx.docx")  # 告诉 R 数据源的位置并读入内存
docx_extract_tbl(doc, tbl_number = 3)  # 提取 xxxx.docx 文档的第三个表格

经测试效果非常好。默认表格是带表头的,对于没有表头的数据可以指定header = FALSE即可,更多信息请通过help(package = "docxtractr")查看包的官方手册。

为你的网站设计一个二维码

开发一个包,总体上要做两件事,一是包的功能问题,这是关键;二是包的帮助文档和宣传问题。包的帮助文档的完善,包括 .Rd 文件(这是必不可少的,将来官网上的手册就是根据这个生成的)、README、vignette 和 NEWS。后面三个不是提交 CRAN 必须的,但是这些文档对新用户非常有帮助。有了这些文档,就可以很容易利用 pkgdown 包生成网页。对于一个专业的 R 开发人员,他还会考虑为他的包设计一个六角贴1。做完这些就可以在R社区宣传你的 R 包了,比如微信朋友圈、微博,甚至是 r-packages 邮件列表

最近发现了一个很有趣的博文:《用 R 打造炫酷彩色二维码》,根据这篇文章的代码就可以很容易的为任何一个网站生成彩色的二维码(注:用 “https” 有问题,用 “http” 才行,具体原因未知)。其实之前我也尝试为一个 url 生成二维码,但是生成的二维码非常单调,只能保证能用,但是代码非常靠谱且简洁,代码如下:

library(qrcode)
qr = qr_code("https://cxy.rbind.io/ecce/")
plot(qr)

用 tesseract 包识别图片文字

这里直接给出代码如下,读者自行体验。

# 加载R包,并查看是否有中文训练数据
library(tesseract)
tesseract_info() 

# 下载中文训练数据
# tesseract_download("chi_sim") # 下载简体中文数据
# tesseract_download("chi_tra") # 下载繁体中文数据

# 定义引擎及图片文件路径
cn = tesseract("chi_sim")
file = "path/to/image"

# 输出文字
txt = ocr(file, engine = cn)
cat(txt)

# 读取图片并显示
library(magick)
pp = image_read(file)
image_scale(pp, "x1000")

由于输出的文字会有部分错误,需要配合图片进行手工修改,因此可以通过最后两行代码,将图片显示在 Viewer 窗口中,这样对照者图片调整比较方便。


  1. 六角贴的制作请看我之前的博文。 ↩︎