楚新元 | All in R

Welcome to R Square

分享几个 R skill

楚新元 / 2021-08-28


在博客里嵌入 shiny

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

  1. 先把你的shiny App发布到 shinyapps.io 上,当然用别人已经发布的也可以。

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

看看效果:

访问速度比较慢,你需要足够的耐心和网速。试图把 shiny App 部署到自己的网站上,但是没有实现,因为 shiny App 需要 R 后台提供实时计算。

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

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

library(ecce)
translate(c("苹果", "我爱你"))
## [1] "Apple"      "I love you"
translate(c("apple", "I love you"))
## [1] "苹果"   "我爱你"

如果向查看更多内容,可以用 translate_full()

translate_full("苹果")
## $phonetic
## [1] "píng guǒ"
## 
## $explains
## [1] "apple"
## 
## $web
## [1] "Apple"  "iphone" "aapl"   "IPOD"
translate_full("apple")
## $phonetic
## [1] "ˈæpl"
## 
## $explains
## [1] "n. 苹果"
## 
## $web
## [1] "苹果"     "苹果公司" "苹果电脑" "苹果汁"

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

translate_view("苹果")

更多内容请看这里 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. 六角贴的制作请看我之前的博文。 ↩︎