首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在满足条件的向量中查找索引

在满足条件的向量中查找索引
EN

Stack Overflow用户
提问于 2014-03-26 19:51:11
回答 3查看 64.4K关注 0票数 33

我正在寻找一个条件,它将返回满足条件的向量的索引。

例如,我有一个向量b = c(0.1, 0.2, 0.7, 0.9),我想知道b的第一个索引,假设b >0.65。在这种情况下,答案应该是3

我尝试过which.min(subset(b, b > 0.65)),但结果是1而不是3。

请帮帮忙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-26 19:53:32

使用which并获取结果的第一个元素:

代码语言:javascript
运行
复制
which(b > 0.65)[1]
#[1] 3
票数 36
EN

Stack Overflow用户

发布于 2016-02-03 12:34:29

请注意,如果从未满足条件,则which.max是错误的,它不会返回NA

代码语言:javascript
运行
复制
> a <- c(1, 2, 3, 2, 5)
> a >= 6
[1] FALSE FALSE FALSE FALSE FALSE
> which(a >= 6)[1]
[1] NA  # desirable
> which.max(a >= 6)
[1] 1   # not desirable

为什么?当所有元素相等时,which.max返回1:

代码语言:javascript
运行
复制
> b <- c(2, 2, 2, 2, 2)
> which.max(b)
[1] 1

注意: FALSE < TRUE

票数 2
EN

Stack Overflow用户

发布于 2014-03-26 20:29:24

您可以使用which.max

代码语言:javascript
运行
复制
which.max(b > 0.65)
# [1] 3

来自?which.max:“对于逻辑向量x,... which.max(x)返回第一个... TRUE的索引

代码语言:javascript
运行
复制
b > 0.65
# [1] FALSE FALSE  TRUE  TRUE

您还应该查看代码subset(b, b > 0.65)的结果,以了解为什么它不能给您想要的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22660149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档