按ID查找最接近的值,长度不等

时间:2015-05-11 06:54:02

标签: r apply

我有一个数据框和一个不等长的矢量。他们没有共享id。

df <- data.frame( 
  id       = factor(rep(1:24, each = 10)),
  x        = runif(20)*100
                )

a <- sort(runif(100*100))

现在,我真的想要遍历数据框的每一行,并且找到每个id最接近的对应值的向量(a)中的位置。

对于单个值,这只是。

which.min(abs(df[1, 2] - a))

所以,如果我“手动”这样做,那就是:

a.location <- c(
    which.min(abs(df[1, 2] - a)) 
    which.min(abs(df[2, 2] - a)),
    ...., 
    which.min(abs(df[24, 2] - a)) 
)

但是当我无法合并数据框和向量时,我根本无法理解如何在函数中执行此操作。我查看了mapply,但是对于不等长并且来自rowwise的{​​{1}}也不是很好,但也没有太多运气。

1 个答案:

答案 0 :(得分:3)

您可以使用(gdb) break _start + 1 Function "_start + 1" not defined. Make breakpoint pending on future shared library load? (y or [n]) n

中的滚动连接
data.table

library(data.table) setkey(setDT(df), x) df1 <- data.table(x=a, id1=1:length(a)) setkey(df1, x) df1[df, roll="nearest"] 列会为您提供所需的结果。