学习自定义函数
在r中,自定义函数有着很多用处,用于封装一些标准化流程。
myfunction <- function(arg1, arg2, ... ){
statements
return(object)
}
myfunction是自定函数的名称
arg是参数
statements是函数语句
return是返回结果
举个例子
end_with <- function(path){
if(!endsWith(path,"*"))#如果path不是已*结尾的则运行....
{path <- paste0(path,"*")}# 给path尾加上*
return(path)#返回path.
}
> path <- "./home/user"
> end_with(path)
[1] "./home/user*"
更新几个自己常用的函数
提取t.test结果
也可以用来提取list的套嵌信息,改一改就行。
extract_t <- function(dat_logFC){
mean <- lapply(data_t,\(x){x[["estimate"]]})%>%unlist%>% data.frame()#提取均值
lcl95 <- lapply(dat_logFC,\(x){x[["conf.int"]][[1]]})%>%unlist%>% as.data.frame()#提取95%置信区间的下限
ucl95 <- lapply(dat_logFC,\(x){x[["conf.int"]][[2]]})%>%unlist%>% as.data.frame()#提取95%置信区间的上限
p_value <- lapply(dat_logFC,\(x){x[["p.value"]]})%>%unlist%>% as.data.frame()#提取p值,但是在后面的图里没有展示
merge_data <- cbind(mean$.,lcl95,ucl95,p_value)#合并,mean$. 是因为如果直接使用mean行名会变得复杂,好像只有mean这个元素的行名与其他不同。
merge_data <- cbind(row.names(merge_data),merge_data)#删除行名,把行名当做列
row.names(merge_data) <- NULL
colnames(merge_data) <- c("name","logFC","lcl95","ucl95","p_value")
return(merge_data)
}
extrac_t(data)
#你可以将你所有的自定义函数都写在一个r脚本里,以后再使用的时候利用source()功能统一加载
source(paste0("~/R/myfunction/extracat_t_data.r"))#像这样