本节来介绍如何封装函数制作R包,非常的简单粗暴;从此每个小伙伴都可以制作一个自己专属的R包;扫描文末二维码加入我的交流群更多精彩内容为您而准备
第一步(编写函数)
下面这段代码定义了一个颜色卡与2个函数,这就是我们这个简单R包的主要内容,将其保存命名为work.R
colors <- c("#E41A1C","#1E90FF","#FF8C00","#4DAF4A","#984EA3",
"#40E0D0","#FFC0CB","#00BFFF","#FFDEAD","#90EE90",
"#EE82EE","#00FFFF","#F0A3FF", "#0075DC",
"#993F00","#4C005C","#2BCE48","#FFCC99",
"#808080","#94FFB5","#8F7C00","#9DCC00",
"#C20088","#003380","#FFA405","#FFA8BB",
"#426600","#FF0010","#5EF1F2","#00998F",
"#740AFF","#990000","#FFFF00")
otu_filter <- function(path) {
group <- read.delim("group.xls")
data <- path %>%
read.delim(check.names = FALSE,row.names = 1)
data2 <- data %>%
mutate(sum = rowSums(.), persent = sum / sum(sum) * 100,
sum = NULL,) %>%
rbind(filter(., persent < 1) %>% colSums()) %>%
mutate(OTU = c(data %>% rownames(), "others"))
filter(data2[1:(nrow(data2) - 1),], persent > 1) %>%
rbind(data2[nrow(data2),]) %>%
select(ncol(.), 1:(ncol(.) - 2)) %>%
set_rownames(seq_len(nrow(.))) %>%
pivot_longer(- OTU) %>% rename(.,sample=name) %>%
inner_join(.,group,by="sample") %>%
return()
}
ggbar <- function(data,mapping) {
ggplot(data,mapping=aes(sample,value,fill=OTU))+
geom_bar(stat="identity",position="fill")+
facet_grid(. ~ group,scales = "free",space="free_x")+
scale_fill_manual(values = colors)+
scale_y_continuous(expand=c(0,0))+theme_bw()+
labs(x=NULL,y=NULL,fill="")+
theme(panel.spacing.x = unit(0.03,"cm"),
axis.text.x=element_text(angle=0,size=10,
vjust = 0.5,hjust=0.5),
axis.text.y=element_text(size=10),
plot.margin=unit(c(0.5,0.5,0.5,0.5),units=,"cm"))
}
第二步(构建R包)
打开Rstudio使用R自带的函数构建R包,name命名包名,code_files写入R脚本路径,执行下面的代码 (注:写入自己的路径)
package.skeleton(name="ggtool",code_files="work.R")
可以看到多了一个ggtool文件夹,这就是我们构建的R包
文件夹内包含如下信息,里面可以修改作者信息等一系列内容,可以自己多看看
-
注:此处要修改man文件夹里面Rd文件的title,一定要修改否则打包会不成功的
第三步(封装R包)
打开终端执行如下命令即可,执行完可以看到出来一个压缩包,这就是我们要的R包
R CMD build ggtool
第四步(安装R包)
本地安装即可
第五步(数据测试)
genus.xls & group.xls为我们的测试文件
执行如下命令即可生成下图
library(tidyverse)
library(magrittr)
library(ggtool)
otu_filter("genus.xls") %>% ggbar()
后台回复20210822获取2个测试数据


关注下方公众号,获取更多优质资源,如需要加入微信交流群,请在菜单栏处添加作者微信,即可邀您进群

