我有一个列表 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/

10-12 17:14