在R语言中,`=`和`<-`是否完全相同?

5

这只是一种风格偏好吗?

据我所知,它们是相同的

我看到很多人更喜欢“长”的<-版本,但我不知道原因(也许是为了避免===混淆?)


3
在R语言中,有两种赋值操作符:‘=’和‘<-’。它们都可以用于将右侧的值赋给左侧的变量。‘=’是最常见的操作符,在函数参数中也经常使用。‘<-’也很常见,通常用于交互式控制台环境中。两个操作符的主要区别在于优先级和赋值方向。在优先级方面,‘=’的优先级比‘<-’低,这意味着如果您将它们与其他操作符混合使用,‘<-’将被解释为更广泛的表达式。另一方面,‘<-’的赋值方向是从右到左,而‘=’的赋值方向是从左到右。因此,在使用‘<-’时需要格外小心,以确保正确地赋值给目标变量。 - Matthew Flaschen
有人能给那篇旧帖子打上assignment-operator的标签吗? - David B
参见:https://dev59.com/f3E95IYBdhLWcg3wi-Uc - Mark Byers
1个回答

6
不,它们并不完全相同:运算符“=”不能在所有可以使用运算符“<-”的地方使用。
“<-”和“=”运算符将分配到它们被评估的环境中。运算符“<-”可以在任何地方使用,而运算符“=”仅允许在顶层(例如,在命令提示符下键入的完整表达式)或作为表达式列表中的子表达式之一。
范围也有所不同。更多细节请参见this answer
哪个更好取决于你问谁。

来自Robert和Casella的《介绍Monte Carlo方法与R》:

赋值运算符是=,不要与布尔运算符“==”混淆,后者用于判断相等。旧的赋值运算符是<-,出于兼容性考虑,它仍然可用,但应该忽略以确保更干净的编程。(正如Spector,P.(2009)在《使用R进行数据操作》第8.7节中指出的那样,在使用system.time时有一个例外,因为=被用来标识关键字)

来源


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

赋值

使用<-而不是=进行赋值。

好的:
x <- 5

不好的:
x = 5


3
P.Spector的话有点奇怪,不是吗?我觉得目前常见的“惯用”风格仍然是用“<-”进行赋值,“=”用于参数列表,尤其是在r-help和bioc邮件列表中。 - Steve Lianoglou

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