您好我正在使用包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;参数
答案 0 :(得分:3)
当您尝试仅预测一行时,代码中似乎存在错误。被调用的函数是partykit:::predict.cforest
。那里有一条线说
return(pw[, match(fnewdata, ids)])
但它应该是
return(pw[, match(fnewdata, ids), drop=FALSE])
所以你可以总是用一个以上的行来调用它,或者你可以破解这个函数(这非常非常hacky并且依赖于函数中的行号以便将来可能会破坏 - 用{测试} {1}})像这样
partykit_1.0-5
现在我们有了一个新函数,可以正确处理一行的情况