r - 在 R : Indexing vectors by boolean comparison of a value in range: index==c(min : max)

标签 r

在 R 中,假设我们有一个向量area = c(rep(c(26:30), 5), rep(c(500:504), 5), rep(c(550:554), 5), rep(c(76:80), 5))和另一个向量 yield = c(1:100) .
现在,说我想像这样索引:

> yield[area==27]
[1]  2  7 12 17 22
> yield[area==501]
[1] 27 32 37 42 47

没问题吧?但是当我尝试使用 c(A, B) 对其进行索引时,奇怪的事情开始发生。 . (当我尝试时更奇怪 c(min:max) ...)
> yield[area==c(27,501)]
[1]  7 17 32 42

我所期待的当然是其他两个示例中都存在的实例,而不仅仅是它们的一些奇怪组合。当我可以使用管道 OR 运算符时,这有效:
> yield[area==27 | area==501]
 [1]  2  7 12 17 22 27 32 37 42 47

但是如果我正在使用一个范围呢?说我想按范围索引它 c(27:503) ?在我的真实示例中,有更多的数据点和范围,因此更有意义,请不要建议我手动完成,这基本上意味着:
yield[area==27 | area==28 | area==29 | ... | area==303 | ... | area==500 | area==501]

一定会有更好的办法...

最佳答案

您要使用 %in% .另请注意 c(27:503)27:503产生相同的对象。

> yield[area %in% 27:503]
 [1]   2   3   4   5   7   8   9  10  12  13  14  15  17
[14]  18  19  20  22  23  24  25  26  27  28  29  31  32
[27]  33  34  36  37  38  39  41  42  43  44  46  47  48
[40]  49  76  77  78  79  80  81  82  83  84  85  86  87
[53]  88  89  90  91  92  93  94  95  96  97  98  99 100

关于r - 在 R : Indexing vectors by boolean comparison of a value in range: index==c(min : max),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208913/

相关文章:

r - 避免通过几何设置边距

r - 交叉何时以及为何对差异进化有益?

r - 使用操作按钮更新条件面板

r - 从 ctree 对象中提取预测变量

r - 从数据框中删除命名变量的温和方法

r - GGally-ggpairs(...,diag = list(Continuous = 'density'))的意外行为

r - dplyr:不带for循环输出的数据帧列表

linux - 从 R 中的系统调用捕获退出状态和输出

r - 有没有办法使用变量来获取 R 中 XTS 数据帧的最后 X 个观察值?

r - 在 R 中找到两个骰子的最小值