前情回顾
10月6号开始学+考科三,总共四天半(周日到周四),然后飞南京巡讲(周五到周一),在南京和小外甥玩了三天(周二到周四),小姨真难当啊,没有睡觉自由和起床自由。昨天周五高铁回烟台老家,今天终于可以开工,公众号恢复更新,我今天还给豆豆交了10块钱保证金,保证今天写出一篇,果然money就是生产力,哈哈。
其实就是新建一个Rpackage空壳子,知道应该在/R文件夹下的脚本里写函数。
1.写个函数进去
然后在R/下面的hello.R写进去一个函数:
以前的需求,统计数据框每列的重复值数量。
dumd <- function(x){
if(!require(tidyverse))install.packages("tidyverse")
suppressMessages(library(tidyverse))
colname <- vector("character")
count <- vector("integer")
for(i in 1:ncol(x)){
colname[i] = colnames(x)[[i]]
count[i]=nrow(x[!duplicated(x[,i]),])
}
df <- tibble(colname,count) %>%
arrange(desc(count))
print(df)
}
别忘了保存这个脚本。
当然,一个好的R包后面还有很多工序,我只是想搞出一个最小可用的包,且能够在其他电脑上面使用。
2.生成tar.gz格式的压缩包
用devtools::build()
这个命令即可生成R包。
devtools::build()
# ✔ checking for file ‘/Users/kingjie/Library/Mobile Documents/com~apple~CloudDocs/0.learn/bioinfor/bioinfor/DESCRIPTION’ ...
# ─ preparing ‘bioinfor’:
# ✔ checking DESCRIPTION meta-information
# ─ checking for LF line-endings in source and make files and shell scripts
# ─ checking for empty or unneeded directories
# Removed empty directory ‘bioinfor/tests/testthat’
# ─ building ‘bioinfor_0.1.0.tar.gz’
#
# [1] "/Users/kingjie/Library/Mobile Documents/com~apple~CloudDocs/0.learn/bioinfor/bioinfor_0.1.0.tar.gz"
看最后,那个叫bioinfor_0.1.0.tar.gz
的文件就是做出来的R包了!
由于暂未成型,没有托管到CRAN或者github,所以还不能直接用install.packages等命令来安装。
但我jio得既然是tar.gz,那就应该可以移植到其他电脑来用吧!试了直接解压,报错了,这就说明肯定有其他方法。
3.怎么在其他电脑上面安装和使用这个包呢?
用网盘传过来压缩包,我将它保存在了D:/rpackage。
搜索是个好习惯

简而言之,就是需要Rtools,然后用cmd命令安装就行,命令是:
Rcmd.exe INSTALL "D:/rpackage/bioinfor_0.1.0.tar.gz"
Rstudio自带终端,l就不需要cmd了,注意,是在控制台面板上面的terminal:

一下就搞定!
4.安装好了,能直接用吗?
不能,要library()啊~
library(bioinfor)
library 没有报错,那就是安装成功
5.测试一下包里的函数
dumd(iris)
# Loading required package: tidyverse
# -- Attaching packages --------------------------------------- tidyverse 1.2.1 --
# √ ggplot2 3.2.1 √ purrr 0.3.2
# √ tibble 2.1.3 √ dplyr 0.8.3
# √ tidyr 1.0.0 √ stringr 1.4.0
# √ readr 1.3.1 √ forcats 0.4.0
# -- Conflicts ------------------------------------------ tidyverse_conflicts() --
# x dplyr::filter() masks stats::filter()
# x dplyr::lag() masks stats::lag()
# # A tibble: 5 x 2
# colname count
# <chr> <int>
# 1 Petal.Length 43
# 2 Sepal.Length 35
# 3 Sepal.Width 23
# 4 Petal.Width 22
# 5 Species 3
出结果了!那就是成功了哈哈。
如果你想试一下安装我写的小辣鸡包0.1.0版本,那就去后台聊天窗口回复“我要R包”,我把小压缩包发给你,只有1k大小,里面就一个函数dumd,惊险,刺激,不过我推荐自己对照本文自己搞一下!
边学边写的如果有什么不妥请前辈指出
网友评论