我正在使用R 2.8.1,可以使用=
和<-
作为变量赋值运算符。它们之间有什么区别?应该使用哪一个?
我正在使用R 2.8.1,可以使用=
和<-
作为变量赋值运算符。它们之间有什么区别?应该使用哪一个?
来自这里:
<-操作符和=操作符将赋值到它们所在的环境中。 <-操作符可在任何地方使用,而=操作符仅允许在顶级(例如,在命令提示符下键入的完整表达式)或作为大括号表达式列表中的子表达式之一。
摘自 Robert 和 Casella 的《使用 R 引入 Monte Carlo 方法》:
“赋值运算符是 =
,不要与布尔运算符相等的 ==
混淆。旧的赋值运算符是 <-
,由于兼容性原因,它仍然可以使用,但应该被忽略以确保代码更加清晰。 (正如 Spector, P. (2009). "R 数据操作" - 第8.7节所指出的,一个例外是当使用 system.time
时,因为 = 被用来识别关键字)
<-
这个赋值符号在布尔表达式中有一个误导特性:
> if (x[1]<-2) ...
这段代码原本用于测试x[1]是否小于-2, 但结果它却将2赋值给了x[1],覆盖了它原来的值。请注意,使用
> if (x[1]=-2) ...
错误地使用 (x[1]==-2) 代替会有相同的结果。
<<-
运算符来执行,而没有基于“equals”的等效运算符。 - gd047if (x[1]=-2)
。具体来说,只允许在顶层使用运算符=
。 - Aaron left Stack Overflow
<-
可以在任何地方使用,这是否意味着不需要使用=
? - Mehper C. Palavuzlar=
以避免全局赋值。看这些例子:http://www.mayin.org/ajayshah/KB/R/html/b1.html。如果你使用name<-"paypal", x<-2, ...
,它会在顶层设置x
。尝试运行该示例,但将=
替换为<-
,并看看会发生什么。 - Mark Byers=
赋予一个次要的语法意义使问题变得更加复杂,除了作为赋值运算符外还有其他用途。 - Konrad Rudolph