r - = 和 == 有什么区别?

标签 r syntax r-faq

=有什么区别和 == ?我发现双等号允许我的脚本运行而一个等号产生错误消息的情况。我应该什么时候使用 ==而不是 = ?

最佳答案

这取决于上下文 =方法。 ==总是用于测试相等性。
=

  • 大多数情况下用作 <- 的直接替代品, 赋值运算符。
    > x = 10
    > x
    [1] 10
    
  • 用作键值对的分隔符,用于在函数调用中为参数赋值。
    rnorm(n = 10, mean = 5, sd = 2)
    

  • 由于以上2.,=不能用作 <- 的替代品在所有情况下。考虑
    > rnorm(N <- 10, mean = 5, sd = 2)
     [1] 4.893132 4.572640 3.801045 3.646863 4.522483 4.881694 6.710255 6.314024
     [9] 2.268258 9.387091
    > rnorm(N = 10, mean = 5, sd = 2)
    Error in rnorm(N = 10, mean = 5, sd = 2) : unused argument (N = 10)
    > N
    [1] 10
    

    现在有人会考虑 rnorm(N <- 10, mean = 5, sd = 2)糟糕的编程,但它是有效的,您需要了解 = 之间的差异和 <-为分配。
    ==总是用于相等性测试:
    > set.seed(10)
    > logi <- sample(c(TRUE, FALSE), 10, replace = TRUE)
    > logi
     [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
    > logi == TRUE
     [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
    > seq.int(1, 10) == 5L
     [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
    

    小心 ==然而,因为它实际上意味着完全等于并且在涉及浮点运算的计算机上,您可能无法得到您期望的答案。例如,来自 ?'==' :
    > x1 <- 0.5 - 0.3
    > x2 <- 0.3 - 0.1
    > x1 == x2                           # FALSE on most machines
    [1] FALSE
    > identical(all.equal(x1, x2), TRUE) # TRUE everywhere
    [1] TRUE
    

    哪里all.equal()由于精度/浮点运算的损失,相等性测试允许有点模糊。

    关于r - = 和 == 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28176650/

    相关文章:

    r - dplyr:在group_by()之后在summary()中使用自定义函数

    python - 如何使用参数从 R 调用 python 脚本

    r - R中函数的语法?

    r - apply() 很慢 - 如何使它更快或我的替代方案是什么?

    r - 一种检测 NaN、NA、Inf、-Inf 等的函数?

    r - 关注 startsWith 和 R 中的多种模式

    r - 修复更新和检查更新数据条件的循环

    vim - 如何使用 Vim 语法文件将单行注释折叠到一个区域中?

    c++ - 为什么我们将按引用传递的值视为地址?

    r - ggplot 的 qplot 不执行采购