保存get'd变量(分配后)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存get'd变量(分配后)相关的知识,希望对你有一定的参考价值。

为什么R不能找到这个变量?

assign(paste0('my', '_var'), 2)
get(paste0('my', '_var')) ## isn't this returning an object?
save(get(paste0('my', '_var')), file =  paste0('my', '_var.RDATA'))

这会引发错误:

Error in save(paste0("my", "_var"), file = paste0("my", "_var.RDATA")) : 
  object ‘paste0("my", "_var")’ not found
答案

在帮助页面中,save()函数需要“保存对象的名称(作为符号或字符串)。”这些值不会被评估,即您不能放入最终会返回字符串或原始值的函数。如果要调用函数以返回变量名称的字符串,请使用list=参数。

save(list=paste0('my', '_var'), file =  paste0('my', '_var.RDATA'))

虽然在R中使用get / assign通常不是一个好习惯。它们通常是更好的方法,所以你可能想重新考虑你的一般方法。

最后,如果您要保存单个对象,则可能需要考虑使用saveRDS()。通常这是人们在使用save()函数时所期望的行为。

另一答案

save的文档说...应该是

要保存的对象的名称(作为符号或字符串)。

事实上,如果你在控制台中键入save,你可以看到源代码就行了

names <- as.character(substitute(list(...)))[-1L]

其中substitute捕获其论点而不评估它。因此,正如错误所示,它正在寻找名为paste0('my', '_var')的对象,而不是评估所提供的表达式。

以上是关于保存get'd变量(分配后)的主要内容,如果未能解决你的问题,请参考以下文章

一个变量的输入值也被保存到另一个变量中

PHP常用代码片段

[react] Module not found: Can't resolve 'schedule' in 'C:Usersadcaldvmtn7myapp (代码片段

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

VSCode自定义代码片段——CSS动画