R中的`=`和`<-`是否完全相同?

Dav*_*d B 5 r assignment-operator

可能重复:
R中的赋值运算符:'='和'< - '

这只是一种风格偏好吗?

据我所知,它们是一样的.

我看到很多人更喜欢"更长"的<-版本,我不知道为什么(可能远离===混淆?)

Mar*_*ers 7

不,它们并不完全相同:=运营商无法在任何地方使用<-.

运算符< - 和=分配到评估它们的环境中.operator < - 可以在任何地方使用,而operator =只允许在顶层(例如,在命令提示符下键入的完整表达式中)或作为支撑表达式列表中的子表达式之一.

范围也有差异.有关详细信息,请参阅此答案.

哪个更好取决于你问谁.


阅读罗伯特和卡塞拉的"用R引入蒙特卡罗方法":

"赋值运算符=,不要与==混淆,这是相等的布尔运算符.较旧的赋值运算符是< - 并且出于兼容性原因,它仍然保持功能,但应该忽略它以确保更清晰的编程(正如Spector,P.(2009)所指出的那样.'数据操作与R' - 第8.7节.,例外是当使用system.time时,因为=然后用于识别关键字)

资源


另一方面,Google的R风格指南建议使用<-:

分配

使用< - ,not =进行分配.

好的:
x < - 5

:
x = 5

  • 这是P. Spector的一个奇怪的声明,不是吗?我觉得流行的"惯用"风格仍然是使用"< - "进行分配,"="代表arg列表,尤其是.来自r-help和bioc邮件列表,不是吗? (3认同)