我有一个列表 l
:
l <- list(c(1,2),c(3,4))
我想检索此列表第一个元素的引用。
换句话说,如果我执行以下操作,我希望这样做:
l1 <- getRef(l,1)
l1[1] <- 0
然后
l
也将被修改。我怎么能在 R 中做这样的事情?
最佳答案
R 不支持这一点,因为在 R 中,所有对象(环境除外)都具有值语义,而不是引用语义。
这样做的唯一方法是通过环境(或建立在环境之上的东西,例如 R6 类)。
作为一个简单的例子(请注意,您需要在此处提供名称):
lenv = function (...) list2env(list(...))
l = lenv(x = lenv(a = 1, b = 2), y = lenv(a = 3, b = 4))
现在你可以做
l1 = l$x
l1$a = 2
l$x$a
# 2
......但这很复杂,效率低下,而且大多数时候不是你想做的。接受 R 具有值(value)语义的事实,而不是反对它。
关于r - 如何检索存储在列表中的对象的引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33434632/