are normally only used in fu-6ren">
gpt4 book ai didi

r - 了解 R 的范围界定演示

转载 作者:行者123 更新时间:2023-12-04 11:37:30 30 4
gpt4 key购买 nike

我尝试理解 R 中的范围界定演示您可以通过demo(scoping)访问.

我不明白total在哪里变量被保存。首先我认为根据 help("<<-")

The operators <<- and ->> are normally only used in functions, and cause a search to made through parent environments for an existing definition of the variable being assigned. If such a variable is found (and its binding is not locked) then its value is redefined, otherwise assignment takes place in the global environment.

它在 global environment 中.但是因为我在那里找不到它(ls(environment))我猜 open.account <- function(total)open.account() 的赋值创建的所有实例创建一个总变量.但是如果我创建一个实例 ross <- open.account(100)我找不到变量。

ross
...
<environment: 0x0000000011fbe998>

ls(environment(environment: 0x0000000011fbe998)) . getAnywhere(total)的结果是no object named ‘total’ was found .那么total的不同版本在哪里? ?

最佳答案

ross 列表中的函数是闭包,即functions with data . (从技术上讲,R 中的大多数函数都是闭包。但通常您不会关心它。)

所有这些闭包都是在对 open.account 的调用中定义的,因此它们与同一环境相关联,“该环境在使用闭包时提供评估框架的外壳”(参见 help("closure")).

total 在此环境中定义。

ross <- open.account(100)

environment(ross$deposit)
#<environment: 0x000000000ae10db8>
environment(ross$withdraw)
#<environment: 0x000000000ae10db8>
environment(ross$balance)
#<environment: 0x000000000ae10db8>

environment(ross$deposit)$total
#[1] 100

关于r - 了解 R 的范围界定演示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268656/

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