Сохранение вывода функции как нового dataf.frame и использование имени исходного ввода в имени сохранения - PullRequest
0 голосов
/ 22 апреля 2020

Я написал функцию, которая берет первые 50 результатов из списка на основе рангов.

myfunction <- function(x){

...selects the top 50 results

return(the top 50 results)

Если вам нужна точная функция, я могу добавить больше деталей.

В идеале я хотел бы, чтобы функция сохраняла список 50 лучших как новый data.frame, автоматически включая имя ввода, например:

'x'_top_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,])
}

Но он все равно не сохранится как новая переменная.

Спасибо.

1 Ответ

0 голосов
/ 22 апреля 2020

Я полагаю, что вам нужна функция assign() для назначения фрейма данных с указанным c именем; и 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...