gpt4 book ai didi

r - 自动分配

转载 作者:行者123 更新时间:2023-12-01 22:22:02 25 4
gpt4 key购买 nike

最近我一直在使用从同事那里继承的一组 R 脚本。这对我来说是一个值得信赖的来源,但我不止一次在他的代码自动分配中发现像

x <<- x

这种操作是否有任何意义?

最佳答案

这是一种将函数中定义的值复制到全局环境(或至少是环境父级堆栈中的某处)的机制:来自 ?"<<-"

The operators ‘<<-’ and ‘->>’ are normally only used in functions, and cause a search to be 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.

我不认为这是特别好的做法(R 是一种主要是函数式的语言,通常最好避免函数副作用),但它确实起到了作用。 (@Roland 在评论中指出,@BrianO'Donnell 在他的回答中 [引用 Thomas Lumley] 指出,如果您使用 <<- 修改函数闭包,则这是一种很好的做法,如 demo(scoping)。根据我的经验,它更常被误用于构造全局变量,而不是干净地使用函数闭包。)

考虑这个例子,从一个空/干净的环境开始:

f <- function() {
x <- 1 ## assignment
x <<- x ## global assignment
}

在我们调用 f() 之前:

x
## Error: object 'x' not found

现在调用f()再试一次:

f()
x
## [1] 1

关于r - 自动分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351857/

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