我试图在R中运行符号回归并使用symbolicRegression并预测rgp包中定义的训练和测试数据的函数。我的训练和测试数据都是具有相同列名的数据框。 symbolicRegression函数工作正常并生成模型。但是当我试图预测时,我得到了这个错误:
FUN中的错误(X [[i]],...):对象' AADAC'找不到
这是我写的代码。
formula_terms = paste(feature_names, collapse = "+")
form = paste(c(out_name, formula_terms), collapse = "~")
model = symbolicRegression(form, train)
prediction = predict(model, newdata = test)
最终公式"形式"看起来像这样:
>form
[1] "ABCC12~AADAC+AAK1"
此外," AADAC"肯定是" test"中的列名,所以我不确定为什么它没有找到。
>test[,"AADAC"]
[1] -0.9473086 -0.3793400 -0.5190044 -0.5221080 -0.3917546 -0.4445167 5.1917181
[8] -0.3638217
我认为问题可能在于我正在治疗" AADAC"仅作为列名而不是变量,所以我尝试了这个:
test$AADAC = test[,"AADAC"]
但这并没有解决问题。有谁知道为什么列名不能与数据框中的正确列匹配?任何建议都将不胜感激。
为了重现性,这里是训练和测试数据的子集以及安装和加载rgp的命令:
if (!require(devtools)) {
install.packages("devtools")
library("devtools")
}
if (!require(rgp)){
install_github("cran/rgp")
library("rgp")
}
train = data.frame(c(-0.79541578, -0.57185906, 0.36521617),c( 1.02661507, 0.83108490, -0.61832129),c( -2.45419706, 2.89389899, 0.47570124))
test = data.frame(c( -0.09121212, -0.69295228, 0.26834160),c(-0.9473086, -0.3793400, -0.5190044),c( -0.13091150, 0.07954598, -0.21344385))
colnames(train) = c("ABCC12", "AADAC", "AAK1")
colnames(test) = c("ABCC12", "AADAC", "AAK1")
feature_names = c("AADAC", "AAK1")
out_name = "ABCC12"
答案 0 :(得分:0)
道歉以复活一个长死的话题,但是最近我遇到了同样的问题,并且能够通过修改Flasch在主循环内调用的predict()函数来解决这个问题。该解决方案主要涉及删除其中的with()子句。如果它仍然使您感兴趣(极不可能,但仍然可以),我可以告诉您。