Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cforest:当newdata是一行数据帧时预测出错_R_Tree_Predict_Party - Fatal编程技术网

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

cforest:当newdata是一行数据帧时预测出错,r,tree,predict,party,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

您好,我正在使用软件包
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),])
require('partykit'))

y当您试图预测一行时,代码中确实出现了一个bug。正在调用的函数是
partykit:::predict.cforest
。里面有一句话说

return(pw[, match(fnewdata, ids)])
但应该是这样

return(pw[, match(fnewdata, ids), drop=FALSE])
因此,您可以总是用一行以上的行调用它,或者您可以对函数进行黑客攻击(这非常非常黑客攻击,并且取决于函数中的行号,因此将来可能会中断—使用
partykit_1.0-5
进行测试),就像这样


mypredict一个更好的解决方案是联系一位
partykit
作者(并非所有人都一直在观看),并要求他们添加您的修复程序。这位作者现在已经这样做了,修复版本将很快从R-Forge获得:感谢您发现这一点并建议修复!
mypredict <- partykit:::predict.cforest
body(mypredict)[[c(13,3,3,3,8)]] <- quote(return(pw[, match(fnewdata, ids), drop=FALSE]))
mypredict(obj, newdata=df[6,])
#          5 
# 0.04755628