我有一个清单l: l - list(c(1,2),c(3,4)) 我想检索此列表的第一个元素的引用. 换句话说,如果我这样做,我想要: l1 - getRef(l,1)l1[1] - 0 然后我也会被修改. 我怎么能在R中做那样的事情? R不支
l <- list(c(1,2),c(3,4))
我想检索此列表的第一个元素的引用.
换句话说,如果我这样做,我想要:
l1 <- getRef(l,1) l1[1] <- 0
然后我也会被修改.
我怎么能在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具有价值语义而不是反对它的事实.