R data.table - 如何在多列中的FIXED行上插入缺失值

时间:2016-07-28 10:41:10

标签: r data.table interpolation

a = data.table(c(2,NA,3), c(5,NA,1))

当我尝试插入缺失的行

a[, approx(x = 1:.N, y = .SD, xout = which(is.na(.SD))), .SDcols = 1:2]

给出以下错误:

Error in xy.coords(x, y) : 'x' and 'y' lengths differ

我希望得到以下内容:

> a
    V1 V2
1: 2.0  5
2: 2.5  3
3: 3.0  1

1 个答案:

答案 0 :(得分:3)

似乎xy(前两个参数)应该是数字向量。您需要循环浏览每一列..在此,我使用set()for-loop来更新原始data.table 按引用

len = 1:nrow(a)
for (col in names(a)) {
    nas = which(is.na(a[[col]]))
    set(a, i=nas, j=col, value=approx(len, a[[col]], xout=nas)$y)
}
#     V1 V2
# 1: 2.0  5
# 2: 2.5  3
# 3: 3.0  1