r语言closure没法读取子集怎样解决
在R语言中,closure是一个函数和它的环境的结合体,通经常使用于创建匿名函数还是在函数中嵌套函数。如果想要在closure中读取父环境的子集,可使用parent.env()函数来获得父环境,然后再使用subset()函数来获得子集。以下是一个示例:
# 创建一个closure函数
f <- function() {
x <- 1:10
closure <- function() {
parent_env <- parent.env(environment())
subset(parent_env, x > 5)
}
return(closure)
}
# 调用closure函数
closure <- f()
subset <- closure()
# 打印子集
print(subset)
在上面的示例中,首先定义了一个父函数f,其中包括一个闭包函数closure。闭包函数closure可以访问父函数f中定义的变量x,并返回x大于5的子集。通过调用f函数获得闭包函数closure,然后再调用closure函数来获得子集并打印出来。
TOP