【发布时间】:2013-07-08 09:16:10
【问题描述】:
在我的 R 函数中,我正在处理一个字符串,该字符串包含位于工作区某处的对象的名称。我想覆盖对象(例如,将对象转换为矩阵)。
但是,我只知道对象的名称是字符串,我没有对象引用。我知道我可以使用get(x) 函数(其中x 是引用对象的字符串)或eval(as.name(x)) 之类的东西将字符串转换为对象引用。但是,这仅适用于访问对象,不适用于覆盖对象。
我怎样才能做到这一点?这是一些代码:
myvector <- 1:5 # my object
x <- "myvector" # text representation of the object
get(x) <- as.matrix(get(x)) # my first attempt
eval(as.name(x)) <- as.matrix(eval(as.name(x))) # second attempt
请注意,第一行不是我要在工作区中覆盖此对象的函数的一部分,因此我不能只写myvector <- as.matrix(myvector)。
【问题讨论】:
-
你在找
?assign吗?:assign(x= "myvector" ,newvalue) -
酷,这比我想象的要容易得多!非常感谢!所以解决方案是:
assign(x, as.matrix(get(x))) -
我怀疑你正在做的任何事情都应该以更好的方式完成。
标签: r object reference pass-by-name