我有一个数据框和一个不等长的矢量。他们没有共享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}}也不是很好,但也没有太多运气。
答案 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"]
列会为您提供所需的结果。