提问人:Mehper C. Palavuzlar 提问时间:2/16/2010 最后编辑:Konrad RudolphMehper C. Palavuzlar 更新时间:1/24/2020 访问量:116799
R 中的“=”和“<-”有什么区别?[复制]
What's the difference between `=` and `<-` in R? [duplicate]
问:
我正在使用 R 2.8.1,可以同时使用和作为变量赋值运算符。它们之间有什么区别?我应该使用哪一个?=
<-
答:
69赞
Mark Byers
2/16/2010
#1
从这里:
运算符 <- 和 = 分配到评估它们的环境中。运算符 <- 可以在任何地方使用,而运算符 = 只允许在顶层使用(例如,在命令提示符下键入的完整表达式中)或作为括号表达式列表中的子表达式之一。
评论
7赞
Mehper C. Palavuzlar
2/16/2010
既然可以在任何地方使用,这是否意味着没有必要使用?<-
=
31赞
Mark Byers
2/16/2010
不可以,调用函数时仍需要使用,以避免全局分配。请看这些例子: mayin.org/ajayshah/KB/R/html/b1.html。如果您使用它,它将设置在顶层。尝试运行该示例,但不要写,看看会发生什么。=
name<-"paypal", x<-2, ...
x
<-
=
5赞
Konrad Rudolph
2/13/2020
文档(直到今天仍然)是错误的。 不仅在顶层允许。默认情况下,除运算符优先级外,和 赋值运算符完全相同。R 除了用作赋值运算符外,还通过提供次要句法含义使问题复杂化。=
<-
=
=
18赞
gd047
2/16/2010
#2
阅读 Robert 和 Casella 的“使用 R 引入蒙特卡罗方法”:
“赋值运算符是 ,不要与 混淆,后者是相等的布尔运算符。较旧的赋值运算符是,出于兼容性原因,它仍然有效,但应忽略它以确保更干净的编程。
(正如Spector,P.(2009)所指出的。'Data Manipulation with R' - 第 8.7 节,例外情况是使用 ,因为 = 用于标识关键字)=
==
<-
system.time
赋值运算符 <- 的一个误导性特征是在布尔值中发现的 表达式,例如
> if (x[1]<-2) ...
它应该测试 x[1] 是否小于 -2 但结束 向上分配 2 到 x[1],擦除其当前值!另请注意,使用
> if (x[1]=-2) ...
错误地而不是 (x[1]==-2) 会产生同样的后果。
评论
0赞
gd047
2/16/2010
我还认为,无论需要做这样的事情,都只能使用(基于“gets”的)运算符来执行,并且没有基于“equals”的等价物。global assignment
<<-
10赞
Mark Byers
8/8/2010
谷歌的 R 风格指南恰恰相反:google-styleguide.googlecode.com/svn/trunk/......
1赞
Aaron left Stack Overflow
3/14/2011
if (x[1]=-2)
方便地禁止以防止此类错误。具体来说,运算符只允许在顶层使用。=
4赞
aaa90210
12/2/2014
他问有什么区别。这是一个非答案。
1赞
moo
4/15/2022
阅读官方 R 文档,我不确定这种说法是否正确:较旧的赋值运算符是 < - 并且,出于兼容性原因,它仍然有效,
上一个:标量与列表赋值运算符
评论