【问题标题】:What's the difference between () and [] in R [closed]R中的()和[]有什么区别[关闭]
【发布时间】:2017-10-03 01:06:51
【问题描述】:
x <- c(2,4,6,8,10)

下面的结果是什么,

sum(x>5) 
sum(x[x>5])

谁能告诉我这到底是什么意思,我是 R 编程新手。

【问题讨论】:

  • 我认为你可以很容易地找到结果
  • 也应该是sum 而不是Sum
  • @moman822 谢谢它是代码编辑但无论如何都没有回答或帮助,请你详细说明
  • [] 是索引。 sum(x > 5)的意思是把()里面的向量或者元素相加,就是(FALSE FALSE TRUE TRUE TRUE),R把TRUE理解为1,FALSE理解为0。所以结果是3。但是,x[ x>5] 表示在 x 向量中“找到”为“TRUE”的向量,实际上是:x[FALSE FALSE TRUE TRUE TRUE]。由于 [] 用作索引,它只为我们获取 TRUE 的元素,并删除 FALSE 的元素。所以这是总结 x 中为 TRUE 的元素; 6,8,10。所以它变成了 24。

标签: r variable-assignment assignment-operator


【解决方案1】:

x&gt;5 返回FALSE FALSE TRUE TRUE TRUE,其和为 3,因为有 3 个TRUEs。它告诉您 x (x[i]&gt;5?) 的每个值是否满足条件并对响应求和。

x[x&gt;5] 子集 x 为每个大于 5 的值,返回 6、8 和 10,总和为 24。

【讨论】:

    【解决方案2】:

    [ 用于根据向量对对象的值进行子集化。有不同的规则取决于您要设置子集的对象的类型。

    ( 用于指定将传递给函数的参数。在你的情况下,一个总和。

    有关大括号的更多信息,请参阅?"("

    您的第一个语句将测试 x 中的每个元素并返回它是否为真。这将分别强制为 1 和 0,并求和 (0 + 0 + 0 + 1 + 1 + 1 = 3)。

    第二个语句将仅对大于 5 (6 + 8 + 10 = 24) 的元素进行子集化并将它们相加。

    【讨论】:

    • 当然(也可以单独作为一个函数使用(只是返回它的参数),比如((function(x,y) invisible(x + y))(1, 2))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 2010-12-10
    • 2011-09-20
    相关资源
    最近更新 更多