仅使用包含该变量名称的字符串将变量分配给字符串

时间:2016-02-22 17:14:46

标签: r string rename

我有很多.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)

但是,磁盘上新对象的大小与加载文件的大小不同(正如我在评论中提到的那样)。

我对此没有解释......

0 个答案:

没有答案