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

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

1
2
library(qrcode)
qrcode_gen("https://cxy.rbind.io/ecce/")

扫描这个二维码直接可以打开ecce包的“官网”😁。下面笔者尝试照猫画虎,为这个“官网”打造一个酷炫彩色的二维码,代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
library(qrencoder)
library(jpeg)
library(RColorBrewer)
library(pheatmap)

url <- 'http://cxy.rbind.io/ecce/'  # 注意:不要以“https”开头,具体原因未知。
col_set <- sample(brewer.pal(8, 'Dark2'), 3)

mat <- qrencode(url)  # 转换成0-1矩阵
mat <-
  apply(mat, 2, function(x) {
    x[x == 1] <-
      sample(1:3, sum(x == 1), replace = T)
    return(x)
  }) #再将1转为随机123表示其他三种颜色

#  生成输出二维码(底图)
jpeg('qr.jpeg', width = 800, height = 800)
par(mar = c(0, 0, 0, 0))
pheatmap(
  mat, cluster_rows=F, cluster_cols=F,color= c('white', col_set),
  border_color = NA,scale = 'none',legend = F
)
dev.off()

#  读取logo和底图,合并两张图
qrcode <- readJPEG('qr.jpeg')
logo <- readJPEG('logo.jpg')

jpeg('qrcode.jpeg')
par(mar = c(0, 0, 0, 0))
plot(0,type='n',xlim=c(0,1),ylim=c(0,1),ylab ='',xlab='',axes=F)
rasterImage(qrcode,xleft = 0,ybottom = 0,xright = 1,ytop = 1)
rasterImage(logo,xleft = .4,ybottom = .4,xright = .6,ytop = .6)
dev.off()
rm(list = ls())

  1. ecce包的网页 👉:https://cxy.rbind.io/ecce/ [return]
  2. 六角贴的制作请看我之前的博文。 [return]