我有很多.asObservable<T>
个文件,它们本身被正确命名,但是它们各自包含的变量(每个文件只有一个)被错误标记。我试图将它们逐个加载到工作区中,将它们重命名为正确的变量名,然后使用每个文件已有的相同文件名将它们保存到新文件夹中。
我的尝试在下面,问题是在使用.rda
的步骤中,似乎只分配变量的实际名称,我想重新分配。所以,当我然后保存并再次加载它时,我有一个变量,其中包含一个字符串,而不是实际结果。
assign
从这三种变体中可以看出,我已经看到了几种方法([1] [2] [3])使用字符串从工作区调用变量。
前三个只是将我的字符串,而使用input_folder <- "/path/to/input_folder/"
output_folder <- "/path/to/output_folder/"
## What I know
A <- "data_chunk" #input name
B <- "results_Lag.1" #variable/data name in workspace
C <- "results.L1.trad_small.rda" #file saved name
load(paste0(input_folder, C)) #load the data into the workspace
to_save <- substr(C, 1, nchar(C)-4) #desired new name in workspace. the -4 loses ".rda"
## Four variations on how to re-assign the data
assign(to_save, B)
assign(to_save, get(B))
assign(to_save, as.name(B))
assign(to_save, eval(parse(B)))
## Save the data with new vairable name to new folder
save(list = to_save, file = paste0(output_folder, C))
保存为变量B
的最后一个变体返回错误:
eval(parse())
如果我在控制台中调用> assign(to_save, eval(parse(B)))
Error in file(filename, "r") : cannot open the connection
Calls: assign -> eval -> parse -> file
In addition: Warning message:
In file(filename, "r") :
cannot open file 'glm_results_Lag.1': No such file or directory
Calls: assign -> eval -> parse -> file
,会按预期返回变量的内容。
正如@joran在评论中所说,第二个变体确实产生了预期的结果,将数据保存到指定的字符串:
get(B)
但是,磁盘上新对象的大小与加载文件的大小不同(正如我在评论中提到的那样)。
我对此没有解释......