R

我写了一个最简单的R包,你学吗

2019-10-19  本文已影响0人  小洁忘了怎么分身

前情回顾

10月6号开始学+考科三,总共四天半(周日到周四),然后飞南京巡讲(周五到周一),在南京和小外甥玩了三天(周二到周四),小姨真难当啊,没有睡觉自由和起床自由。昨天周五高铁回烟台老家,今天终于可以开工,公众号恢复更新,我今天还给豆豆交了10块钱保证金,保证今天写出一篇,果然money就是生产力,哈哈。

我要学R包开发了,一起吗

其实就是新建一个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,惊险,刺激,不过我推荐自己对照本文自己搞一下!

边学边写的如果有什么不妥请前辈指出

上一篇 下一篇

猜你喜欢

热点阅读