“=”和“< - ”之间是否存在技术差异?

时间:2011-05-26 14:58:03

标签: r

  

可能重复:
  Assignment operators in R: '=' and '<-'

我想知道R中的赋值运算符"=""<-"之间是否存在技术差异。所以,如果我使用它会有什么不同:

示例1:a = 1a <- 1

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

感谢您的帮助

斯文

1 个答案:

答案 0 :(得分:20)

是的。这就是'='的帮助页面所说的内容:

  

运算符&lt; - 和=赋值给   它们所处的环境   评估。可以使用运算符&lt; -   在任何地方,而运营商=是   只允许在顶层(例如,   在输入的完整表达式中   命令提示符)或作为其中之一   支撑列表中的子表达式   表达式。

使用“可以使用”帮助文件意味着在此处分配对象。在函数调用中,您无法使用=分配对象,因为=表示在那里分配参数。

基本上,如果您使用<-,那么您可以分配一个可以在当前环境中使用的变量。例如,考虑:

matrix(1,nrow=2)

这只是一个2行矩阵。现在考虑:

matrix(1,nrow<-2)

这也为你提供了一个双行矩阵,但现在我们还有一个名为nrow的对象,其值为2!发生的事情是,在第二次使用中我们没有分配参数nrow 2,我们分配了一个对象nrow 2并将其发送到matrix的第二个参数,恰好是nrow。

编辑:

至于编辑过的问题。两者都是一样的。使用=<-会引起很多关于哪一个最好的讨论。许多风格指南倡导者<-并且我同意这一点,但确实在<-作业周围保留空格,否则它们很难解释。如果你不使用空格(你应该,除了在推特上),我更喜欢=,从不使用->

但是,只要你的选择一致,那么你使用什么并不重要。在一行上使用=而在下一行使用<-会导致代码非常难看。