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

问题描述:

我正在制作一个R函数,其中我使用assign(variable_name,some_data_frame)连接值为variable_name,其值为some_string(在函数内部找到) ,到some_data_frame。这使我能够通过>variable_name>get(variable_name)调用名称。使用save()通过R中的assign()连接的变量名称和值

什么实际上,我试图做的是使该变量:

some_string <- some_data_frame 

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

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

事实证明,save()不允许get() ITO是里面的功能。任何提示/更好的方法来做到这一点?在此先感谢

+0

你真的需要用'分配()步骤'如果你再保存呢?你可以写'save(some_data_frame),file = paste0(some_string,“.Rda”)'? – zielinskipp

+0

是的,因为我希望它可以用正确的变量名称(不只是文件名)保存 – Nli

+0

@PiotrZieliński – Nli

我找到了解决方法(在一个线程可惜我以前忽略)
https://stat.ethz.ch/pipermail/r-help/2011-September/289404.html 这样: “” do.call(保存列表(变量名,文件=膏(变量名, “RDA”,九月=) ))

@PiotrZieliń[email protected]

+0

不错!正是我需要的。它的R怪癖之一很难缠绕你的头。 – zach

以下过程应解决您的问题。

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 + .()建设创建你所需要的呼叫 ,然后你只需要评估这一呼吁。

+0

我不明白这有什么帮助,但也许你正在做的事情。这只会调用variable_name的字符串值 - 而不是data.frame。我也尝试用get()替换as.name(),哪种工作,但给了我一个错误(没有说哪个) – Nli

+0

错误只是“错误”和一些列表代表我的data.frame – Nli