当前位置 : 主页 > 网络推广 > seo >

如何检索存储在列表中的对象的引用?

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个清单l: l - list(c(1,2),c(3,4)) 我想检索此列表的第一个元素的引用. 换句话说,如果我这样做,我想要: l1 - getRef(l,1)l1[1] - 0 然后我也会被修改. 我怎么能在R中做那样的事情? R不支
我有一个清单l:

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具有价值语义而不是反对它的事实.

网友评论