Сохраните файл Excel с именем фрейма данных, если в функции

Простой вопрос, но как сохранить имя фрейма данных в качестве имени файла Excel, если оно находится в функции?

export_origin <-  function(df){
 df1 <- unite(df, variable, c(Reaction.Type, Trial, Actual.Total.Seconds)) 
 df2<- dcast(df1, X.nm.~variable, value.var = "X.A.")
 fname= paste(df, "xls", sep = ".")
 write.xlsx2(df2, file = fname, col.names = TRUE)}

Я хочу fname = df.xls с любым именем df, которое я ввожу, но он сохраняет его как наблюдения в кадре данных как имя.


r
person acd    schedule 14.06.2017    source источник
comment
Если вы хотите получить имя в виде строки, используйте substitute(df)   -  person akrun    schedule 14.06.2017
comment
Какие еще пакеты вы используете? Я предполагаю, что unite от dplyr, а dcast от reshape2. Но откуда взялось write.xlsx2? Я думаю, вы могли бы добавить больше деталей.   -  person www    schedule 14.06.2017


Ответы (1)


Мы можем использовать deparse(substitute

export_origin <-  function(df){
    v1 <- deparse(substitute(df))
    df1 <- unite(df, variable, c(Reaction.Type, Trial, Actual.Total.Seconds)) 
   df2<- dcast(df1, X.nm.~variable, value.var = "X.A.")
   fname= paste(v1, "xls", sep = ".")
   write.xlsx2(df2, file = fname, col.names = TRUE)}
  }

Чтобы сделать это воспроизводимым,

export_origin <-  function(df){
    v1 <- deparse(substitute(df))
    paste(v1, "xls", sep=".")
 }

export_origin(df)
#[1] "df.xls"
person akrun    schedule 14.06.2017
comment
Это блестящий ответ, которого я никогда не встречал! Спасибо! - person amrrs; 05.10.2017