在R中访问其自身内的列表元素

时间:2018-02-06 13:00:49

标签: r

我可以创建一个包含函数的列表,例如

foo <- list(value=1, func=function(x) x+1)

然后foo$func(3)提供4。但是$func函数是否可以访问同一列表中的$value元素?我尝试了以下内容,这显然是错误的:

foo <- list(value=1, func=function(x) x+value)
foo$func(3)
# Error in foo$func(3) : object 'value' not found

我知道以下代码有效:

bar <- list(value=1, func=function(FOO,x) x+FOO$value)
bar$func(bar, 3)
# [1] 4
func <- function(FOO,x) x+FOO$value
func(foo,3)
# [1] 4

但出于某些原因,我想使用foo$func(3)语法,而不是func(foo,3)。这可以通过R吗?

来实现

谢谢。

修改

除了下面的有用答案,?ReferenceClasses也很有用。

2 个答案:

答案 0 :(得分:4)

foo <- list(value = 1, func = function(x) x + foo$value)
foo$func(3)

这对你来说足够好吗?

答案 1 :(得分:2)

可以使用proto包来完成。

library("proto")

foo <- proto(value = 1, func = function(., x) x + .$value)

foo$func(3)
#> [1] 4

foo$value <- 7
foo$func(10)
#> [1] 17