我已经编写了一个函数,从一个基于排名的列表中获取前50名的结果。
myfunction <- function(x){
...selects the top 50 results
return(the top 50 results)如果您需要确切的函数,我可以添加更多的细节。
理想情况下,我希望函数通过自动包含输入的名称,将前50位列表保存为一个新的data.frame:
‘x’_50
因此,我可以反复使用这个函数,它会自动保存输出以供以后使用。
任何帮助都会很好,谢谢!
编辑
这是我从第一个答案中得到的:
t50<-function(x){
m101mb<-x[,1:2]
m101ts<-x[,3:4]
incommon<-intersect(m101mb$mb_gs,m101ts$ts_gs)
df1<-m101mb[m101mb$mb_gs %in% incommon,]
df2<-m101ts[m101ts$ts_gs %in% incommon,]
df3<-df1[order(df1$mb_gs),]
df4<-df2[order(df2$ts_gs),]
df5<-cbind(df3,df4)
df6<-data.frame(df5$mb_rank,df5$ts_rank)
df7<-rowMeans(df6)
df8<-data.frame(df5,df7)
df9<-data.frame(df8$ts_gs,df8$df7)
df10<-df9[order(df9$df8.df7),]
colnames(df10)<-c("Gene_symbol","Gene_rank")
assign(paste(deparse(substitute(x)),"top", "50", sep = "_"), df10[1:50,])
return(df10[1:50,])
}但它仍然不会保存为一个新的变量。
谢谢。
发布于 2020-04-22 10:14:34
我相信您想要的是函数assign()为数据分配一个特定的名称,deparse()和subsitute()提取之前给定的变量名。
myfunction <- function(x){
#whatever you're doing it's here that results in the_top_50_results as a dataframe
assign(paste(deparse(substitute(x)), "top", "50", sep = "_"), the_top_50_results, envir = .GlobalEnv)
}https://stackoverflow.com/questions/61362384
复制相似问题