【问题标题】:a is a numerical vector and b is logical. what is suma[b] [closed]a 是数字向量, b 是逻辑向量。什么是 suma [b] [关闭]
【发布时间】:2017-09-02 00:20:19
【问题描述】:

设 a

【问题讨论】:

  • 因为这就是 R 的工作方式。你不明白哪一部分?
  • 检查which(c(TRUE, TRUE, FALSE, FALSE))的输出。 a 是根据那个子集。
  • 使用逻辑向量b作为a的索引意味着从a中选择b为TRUE的元素。
  • 或尝试输入 a[b] 以查看汇总的内容。

标签: r indexing subset


【解决方案1】:

在 R 中,向量(您的问题中为a)可以是逻辑索引向量(您的问题中为b)的子集。如果逻辑向量中对应的成员是TRUE,则保留(a的)元素。

a = c (3, 4, 7, 8)
b = c(TRUE, TRUE, FALSE, FALSE)

a[b]
#[1] 3 4

a[b] 将只保留a 的前两个元素,因为在b 中只有这些值是TRUE。当你sum34时,就是7

如果你给“[”函数一个比作为子集的向量短的向量,你可能会得到令人惊讶的结果(并且不会出现警告):

a[ b[1:3] ]
[1] 3 4 8 # the fourth item in `a` appears because the logical vector is "recycled"

【讨论】:

  • 谢谢.. 这有帮助.. 我是 R 新手,所以现在很清楚
  • @d.b.您的答案不是对逻辑索引的准确描述,因为它忽略了非常重要(且危险)的情况,即使用长度与作为子集的向量不同的逻辑索引。查看a[ b[1:3] ] 的输出以查看“危险”。请注意,当存在回收时,没有给出我所期望的警告。 (我不会反对,如果您修改答案,我会删除此评论。)
猜你喜欢
  • 2011-06-13
  • 2014-03-29
  • 2019-08-07
  • 1970-01-01
  • 2019-08-18
  • 2020-04-01
  • 2016-01-21
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多