在我的 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)
.