【问题标题】:Is there a technical difference between "=" and "<-" [duplicate]“=”和“<-”之间是否存在技术差异[重复]
【发布时间】:2011-09-02 16:45:47
【问题描述】:

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

示例 1:a = 1a &lt;- 1

示例 2:a = c(1:20)a &lt;- c(1:20)

感谢您的帮助

斯文

【问题讨论】:

    标签: r


    【解决方案1】:

    是的,有。 '=' 的帮助页面是这样说的:

    运算符

    带有“可以使用”的帮助文件意味着在这里分配一个对象。在函数调用中,您不能使用= 分配对象,因为= 意味着在那里分配参数。

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

    matrix(1,nrow=2)
    

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

    matrix(1,nrow<-2)
    

    这也为您提供了一个两行矩阵,但现在我们还有一个名为 nrow 的对象,其计算结果为 2!发生的情况是,在第二次使用中,我们没有分配参数nrow2,而是分配了一个对象nrow2,并将其发送到matrix 的第二个参数,恰好是nrow。

    编辑:

    至于已编辑的问题。两者都是一样的。使用=&lt;- 会引起很多关于哪个最好的讨论。许多风格指南提倡&lt;-,我同意这一点,但请在&lt;- 分配周围保留空格,否则它们会变得很难解释。如果你不使用空格(你应该使用,除了在 Twitter 上),我更喜欢=,并且永远不要使用-&gt;

    但实际上,只要您的选择始终如一,您使用什么并不重要。在一行上使用=,在下一行使用&lt;-会导致代码非常难看。

    【讨论】:

    • 这个答案是错误的(不幸的是文档也是错误的)。正如其他地方所解释的,运算符之间的唯一区别是它们的优先级。但是,与这个答案所说的相反,=&lt;- 赋值都是在同一个环境中评估的,说= 只能在顶层使用是绝对错误的。
    • 另外,在你的例子中,我猜matrix(1,nrow=2) 要求有一个名为nrow 的参数,你把nrow=2 放在哪个位置都没有关系,因为它是一个关键字参数,而如果您改为写nrow&lt;-2,则将其放在哪个位置确实很重要,因为不是突然之间是位置参数而不是关键字参数吗?如果是这样,我想也很容易将表达式 nrow&lt;-2 误解为关键字参数而不是位置参数,因此应该在函数调用中避免使用该表达式?
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2016-07-16
    • 2012-07-14
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多