我可以创建一个包含函数的列表,例如
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
也很有用。
答案 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