r - R 中逻辑向量的最近索引

标签 r indexing nearest-neighbor

我试图根据另一列的条目从一列中获取最接近 TRUE 值的索引。我的示例数据框如下所示:

a <- c(FALSE,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE)
b <- c(NA, NA, 3, NA, NA, NA, NA, 8, NA, NA, NA, 12, NA, NA, NA)
df <- data.frame(a, b)

我想创建一个新列,给出 b 给定值之前最接近 TRUE 值的索引。为了说明这一点,生成的 df 应如下所示:

       a  b  c
1  FALSE NA NA
2   TRUE NA NA
3  FALSE  3  2
4  FALSE NA NA
5  FALSE NA NA
6   TRUE NA NA
7  FALSE NA NA
8  FALSE  8  6
9   TRUE NA NA
10  TRUE NA NA
11 FALSE NA NA
12 FALSE 12 10
13 FALSE NA NA
14 FALSE NA NA
15 FALSE NA NA

我知道我可以使用 max(which(df$a == TRUE)) 但我不知道如何让它以只考虑索引的方式工作前面的值。谢谢!

最佳答案

我们可以获取所有TRUE值的索引,然后使用findInterval来获取b中每个值最接近的一个。

inds <- which(df$a)
df$c <- inds[findInterval(df$b, inds)]
df

#       a  b  c
#1  FALSE NA NA
#2   TRUE NA NA
#3  FALSE  3  2
#4  FALSE NA NA
#5  FALSE NA NA
#6   TRUE NA NA
#7  FALSE NA NA
#8  FALSE  8  6
#9   TRUE NA NA
#10  TRUE NA NA
#11 FALSE NA NA
#12 FALSE 12 10
#13 FALSE NA NA
#14 FALSE NA NA
#15 FALSE NA NA

关于r - R 中逻辑向量的最近索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60277188/

相关文章:

solr - 在多维空间中用 Solr 找到 n 个最近的点

c++ - 加速 C/Rcpp 中 Dice 系数的计算

在r包中重新导出数据集

r - 匹配 R 数据帧中的单元内操作

excel - LOOKUP 函数给出奇怪的结果

sql - 利用索引对 VARBINARY 进行前缀查询

python - 如果存在特定值,则从偶数列中删除行

R 用户定义的函数单独工作,但在与 apply 一起使用时返回不正确的值

r - 在 igraph 中查找顶点的第 n 级邻居

r - 在 flexdashboard 中将滚动添加到侧边栏