首页 > 解决方案 > R:获取向量中第一个实例的索引大于变量但对于整个列

问题描述

我正在尝试在 data.table 中创建一个新变量。它旨在获取 data.table 中的一个变量,并将每个观察值与一个向量进行比较,并返回向量中大于 data.table 中的变量的第一个观察值的索引。

例子

ComparatorVector <- c(seq(1000, 200000, 1000))
Variable <- runif(10, min = 1000, max = 200000)

对于中的每个观察,Variable我想知道第一个观察的指数ComparatorVector大于 的观察Variable

我玩过 araound min(which()),但无法通过ComparatorVector. 我也看到了这个match()函数,但没有找到如何让它返回除了完全匹配的索引之外的任何东西。

标签: rloopsdata.tablematchsequencing

解决方案


一个选项是findInterval

findInterval(Variable, ComparatorVector) +1
#[1] 190 152  99 107  38 148 114  95  53  73

或与sapply

sapply(Variable, function(x) which(ComparatorVector > x)[1])
#[1] 190 152  99 107  38 148 114  95  53  73

推荐阅读