R语言中的赋值运算符: '<-' 和 '<<-'

5

在R语言中,赋值运算符<-<<-有什么区别?

什么情况下应该使用<<-


这个问题之前已经被问过了:https://dev59.com/YG025IYBdhLWcg3wzpWK - joekz
1
请参见这里这里。后者尤其是非常相似的重复问题。 - joran
3
我建议你忘记 <<-,我从未见过它的有效用途。全局变量是不必要的,而且容易导致代码难以阅读和维护。 - Paul Hiemstra
1
@PaulHiemstra,你不认为闭包是一个有效的用法吗?我特别想到的是<<-不是将值分配给全局环境,而是分配给中间封闭环境的情况。 - BrodieG
1
@BrodieG说没有<<-的地方可能不太准确(尽管我在多年的R编程中从未使用过<<-)。但在绝大多数情况下,它是不必要的。此外,适用<<-的情况可能是相当复杂的情况(您提到了嵌套环境),而初学者程序员在简单情况下更容易滥用<<- - Paul Hiemstra
显示剩余3条评论
1个回答

7

<-将一个对象分配给其被评估的环境(局部作用域)。<<-将一个对象分配给下一个最高的环境,该名称在其中找到或者全局命名空间如果没有找到名称。请参见此处的文档。

<<通常仅在函数中使用,但要小心。由于很难追踪赋值的评估过程,因此<<可能更难调试。最好使用具有return语句的函数来编写。

Hadley Wickham在他的高级R编程书籍中有一个很好的解释。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接