加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在R中:通过布尔比较范围内的值来建立索引向量:index == c(min

发布时间:2020-12-16 04:53:41 所属栏目:百科 来源:网络整理
导读:在R中,假设我们有一个向量 area = c(rep(c(26:30),5),rep(c(500:504),rep(c(550:554),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 没问题,对吧?但
在R中,假设我们有一个向量
area = c(rep(c(26:30),5),rep(c(500:504),rep(c(550:554),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(最小值:最大值)时甚至更奇怪…)

> 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]

肯定有更好的办法…

解决方法

您想在%中使用%.还要注意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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读