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
答案 0 :(得分:3)
似乎x
和y
(前两个参数)应该是数字向量。您需要循环浏览每一列..在此,我使用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