gpt4 book ai didi

r - 函数 ls() 对 R 中的环境有什么作用

转载 作者:行者123 更新时间:2023-12-04 04:39:18 25 4
gpt4 key购买 nike

我运行以下代码

sapply( 0:3, function(x){ls(envir = sys.frame(x))} )

并得到以下结果
[[1]]
[1] "mat" "mat_inverse"

[[2]]
[1] "FUN" "simplify" "USE.NAMES" "X"

[[3]]
[1] "FUN" "X"

[[4]]
[1] "x"

它似乎列出了当前封闭环境中的所有对象;我确实有 mat 和 mat_inverse 作为两个变量。但我不确定它为 [[2]]、[[3]]、[[4]] 返回什么。有没有办法调试这段代码来跟踪这段代码的作用?特别是以下部分:
envir = sys.frame(x)

对我来说很困惑。

最佳答案

sys.frame允许您返回调用堆栈。 sys.frame(0)是堆栈的开始(可以说是您的初始工作区)。 sys.frame(1)嵌套一层深,sys.frame(2)嵌套两层深等。

这段代码很好地演示了当你调用 sapply 时会发生什么。 .它经过四个环境(编号为 0-3)并在每个环境中打印对象。 sapply实际上是 lapply 周围的包装器.当你实际调用这段代码时,你得到了什么环境?

环境 0 是开始,即您的整个工作区。
环境 1 是 sapply .类型 sapply查看它的代码。你会看到函数头有 simplify ,您在 [[2]] 中看到的变量之一。
环境 2 是 lapply .再次输入 lapply查看其代码;函数头包含 FUNX .
环境 3 是您为 sapply 定义的函数运行。它只有一个变量,x .

作为实验,运行

sapply(0:3, function(x) { howdy = 5; ls(envir = sys.frame(x)) } )

最后一行将更改为 [1] "howdy" "x" ,因为您在最终环境中定义了一个新变量( lapply 内部的函数 sapply )。

关于r - 函数 ls() 对 R 中的环境有什么作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19168607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com