对通过R中的assign()连接的变量名和值使用save()

时间:2016-06-09 14:42:59

标签: r save assign

我正在创建一个R函数,我使用assign(variable_name,some_data_frame)variable_name的值连接到{some_string,其值some_data_frame(在函数内找到) {1}}。这使我能够使用>variable_name调用名称,并使用>get(variable_name)调用数据框。

我实际上要做的是制作变量:

some_string <- some_data_frame

...然后保存。 我想我可以calling save()这样做:

save(get(variable_name),file = paste(c(variable_name,'.Rda'),collapse="")) 

事实证明,save()不允许get()在函数内部。任何提示/更好的方法来做到这一点?提前致谢

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方案(我以前遗憾地忽略了一个主题) https://stat.ethz.ch/pipermail/r-help/2011-September/289404.html 因此: do.call(save,list(variable_name,file = paste(variable_name,“rda”,sep =“。”)))

@PiotrZieliński@ LarsArneJordanger

答案 1 :(得分:0)

以下程序可以解决您的问题。

variable_name <- "some_string"
some_data_frame <- data.frame()


assign(x = variable_name,
       value = some_data_frame)


save_quote <- bquote(
    save(.(as.name(variable_name)),
         file = paste0(c(.(variable_name)),
                       ".Rda")))

save_quote
save(some_string, file = paste0(c("some_string"), ".Rda"))

eval(save_quote)

这个想法是bquote + .()构造创建了调用 你需要,然后你只需要评估那个电话。