2016-06-09 16 views
1

我正在製作一個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

回答

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 + .()建設創建你所需要的呼叫 ,然後你只需要評估這一呼籲。

+0

我不明白這有什麼幫助,但也許你正在做的事情。這隻會調用variable_name的字符串值 - 而不是data.frame。我也嘗試用get()替換as.name(),哪種工作,但給了我一個錯誤(沒有說哪個) – Nli

+0

錯誤只是「錯誤」和一些列表代表我的data.frame – Nli