R knnImpute无法正常工作

时间:2014-06-19 05:23:16

标签: r missing-data

我将以下代码作为示例:

df = data.frame(x=c(100:104,NaN,106:110),y=c(200:204,NaN,206:210))
s = preProcess(df,method="knnImpute")

当我使用预测函数时,使用以下代码:

pre = predict(s,df)

R只是崩溃,我必须重新启动。

上面的代码有什么问题?另外,你需要2列knnImpute才能工作吗?

1 个答案:

答案 0 :(得分:0)

维护程序包的Gregory Jefferis清除了这个谜团:使用knnImpute进行预处理会静默删除任何包含NA值的列,因此你的变量x和y在predict()之前都会丢失。这是一个没有崩溃的例子。诀窍是在没有NA的情况下使用更多相关的列。

x=rnorm(100); y=rnorm(100)
z1 = x+2*y + rnorm(100,sd=0.1)
z2 = 3*x+2 + rnorm(100,sd=0.3)
z2 = 2*y+8 + rnorm(100,sd=0.3)
df = data.frame(x,y,z1,z2)
head(df)
df[25, 1] = NA
df[50, 2] = NA
xform = preProcess(df, method="knnImpute")
predict(xform, df)