在 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/