Hier ist eine bizarre rekursive Funktion, die ich geschrieben habe, mir zu helfen, die Beziehungen zwischen sys.parent zu verstehen() und der Umwelt:verschachtelte Funktionen, sys.parent und Umgebungen in R
dive = function(level = 1, max.depth = 5)
{
m = match.call()
print(paste("sys.frame() says", format(sys.frame())))
print(paste("sys.parent() says", sys.parent()))
print(paste("sys.frame(sys.parent()) says", format(sys.frame(sys.parent()))))
m[[2]] = m[[2]]+1
if(m[[2]] > max.depth)
stop("Not actually an error -- we're just tripping out!")
eval(m)
}
die Funktion Laufe gibt
dive(level = 1, max.depth = 5)
[1] "sys.frame() says <environment: R_GlobalEnv>"
[1] "sys.parent() says 0"
[1] "sys.frame(sys.parent()) says <environment: R_GlobalEnv>"
[1] "sys.frame() says <environment: R_GlobalEnv>"
[1] "sys.parent() says 1"
[1] "sys.frame(sys.parent()) says <environment: 0x2831dd0>"
[1] "sys.frame() says <environment: R_GlobalEnv>"
[1] "sys.parent() says 4"
[1] "sys.frame(sys.parent()) says <environment: 0x3b1dff8>"
[1] "sys.frame() says <environment: R_GlobalEnv>"
[1] "sys.parent() says 7"
[1] "sys.frame(sys.parent()) says <environment: 0x3b31c68>"
[1] "sys.frame() says <environment: R_GlobalEnv>"
[1] "sys.parent() says 10"
[1] "sys.frame(sys.parent()) says <environment: 0x3c238c0>"
Error in dive(level = 5, max.depth = 5) :
Not actually an error -- we're just tripping out!
Es gibt viel los hier, aber ich werde meine Frage einfach halten: Warum um 1 (0 bis 1) anschließend durch 3 (dh zunächst nicht sys.parent() erhöhen 1 , 4, 7, 10 ...)?
Sie könnten dies hilfreich: https://github.com/hadley/devtools/wiki/Environments#function-environments – hadley
auch hier: http://obeautifulcode.com/R/How- R-Sucht-und-findet-Zeug / – zkurtz