cforest:预测newdata是一行数据帧时出错

时间:2016-04-29 13:56:14

标签: r tree predict party

您好我正在使用包partykit及其函数cforest来适应模型。我还可以使用predict根据多行数据帧进行预测。但是,我无法预测有一行的数据帧。

require('partykit')
y <- matrix(rnorm(500*1),nrow=500,ncol=1)
x <- matrix(rnorm(500*6),nrow=500,ncol=6)
df <- data.frame(y=y,x=x)
obj = cforest(y ~ ., data= df)

#works
predict(obj,newdata=df)

# doesn't work
predict(obj,newdata=df[5,])

#this works
predict(obj,newdata=df[c(5,6),])

错误消息是:

  

预测(obj,newdata = df [5,])向量中的错误(mode =&#34; list&#34;,length = ncol(w)):invalid&#39; length&#39;参数

1 个答案:

答案 0 :(得分:3)

当您尝试仅预测一行时,代码中似乎存在错误。被调用的函数是partykit:::predict.cforest。那里有一条线说

return(pw[, match(fnewdata, ids)])

但它应该是

return(pw[, match(fnewdata, ids), drop=FALSE])

所以你可以总是用一个以上的行来调用它,或者你可以破解这个函数(这非常非常hacky并且依赖于函数中的行号以便将来可能会破坏 - 用{测试} {1}})像这样

partykit_1.0-5

现在我们有了一个新函数,可以正确处理一行的情况