"="和"<-"之间是否有技术上的区别?"

23 浏览
0 Comments

"="和"<-"之间是否有技术上的区别?"

这个问题已经有了答案:

\"=\"和\"<-\"赋值运算符有什么区别?

我想知道在R中赋值运算符\"=\"\"<-\"之间是否有技术上的区别。所以,如果我使用:

示例1:a = 1a <- 1

示例2:a = c(1:20)a <- c(1:20)

谢谢你的帮助

Sven

admin 更改状态以发布 2023年5月23日
0
0 Comments

是的,有的。这是符号'='的帮助页面上写的:

操作符<-=将值赋给它们所在的环境。操作符<-可以在任何地方使用,而操作符=只有在顶层(例如,在命令提示符下键入的完整表达式)或作为括号内表达式列表中的子表达式时才被允许。

帮助文件中的“可以在任何地方使用”是指在此处分配对象。在函数调用中,你不能使用=分配对象,因为=在那里表示分配参数。

基本上,如果你使用<-,那么你会在当前环境中分配一个变量,可以在其它地方使用。例如,考虑:

matrix(1,nrow=2)

这只创建了一个2行的矩阵。现在考虑:

matrix(1,nrow<-2)

这也给出了一个两行的矩阵,但现在我们还有一个叫做nrow的对象,它被评估为2!发生了什么是在第二个使用中,我们没有将参数nrow分配为2,而是将对象nrow分配为2并将其发送到matrix的第二个参数,该参数恰好是nrow。

编辑:

至于编辑后的问题。两个是相同的。使用=<-可能会引起很多讨论,看哪个更好。许多样式指南主张使用<-,我也赞同这一点,但在<-赋值周围保留空格,否则它们可能会变得很难解释。如果你不使用空格(除了Twitter之外,应该使用),我更喜欢使用=,并且从不使用->

但是,真的无论你使用什么,只要你在选择上始终保持一致即可。在一行使用=,在下一行使用<-会导致非常丑陋的代码。

0