R的父框架是什么。顺便问一下,父框架是什么意思?我猜这是定义环境而不是调用环境,因为 R 使用词法作用域,但我不确定。谢谢。
嗯,从?parent.frame
帮助页面
函数求值的父框架是调用该函数的环境。它的编号不一定比当前评估的帧编号小一,也不是定义函数的环境。如果 n 为 1(默认),则 sys.parent 返回父框架的编号;如果 n 为 2,则返回祖父框架的编号,依此类推
并且
严格来说,sys.parent 和parent.frame 指的是父解释函数的上下文。因此,内部函数(可能会或可能不会设置上下文,因此可能会或可能不会出现在调用堆栈上)可能不会被计算在内,并且 S3 方法也可以做一些令人惊讶的事情。
因此,parent.frame 指的是调用函数的环境,而不是定义函数的环境。
例如
parentls <- function() {
ls(envir=parent.frame())
}
a<-function() {
x <- 5
parentls()
}
b <- function() {
z <- 10
parentls()
}
a()
# [1] "x"
b()
# [1] "z"
parentls()
# [1] "a" "b" "parentls"
Here, parentls()
做一个ls()
在parent.frame中。当从内部运行时a()
or b()
我们只能看到这些函数中的变量。当单独调用时,它只是为您提供全局环境中的所有变量,就像您调用一样ls()
通过它自己。
您可以阅读有关父框架的更多信息封闭部分 http://adv-r.had.co.nz/Functional-programming.html#closures or 调用环境部分 http://adv-r.had.co.nz/Environments.html#calling-environmentsHadely 的高级 R。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)