符号回归预测问题:FUN中的错误(X [[i]],...):对象' x'未找到

时间:2018-03-25 04:22:01

标签: r dataframe regression formula

我试图在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"

1 个答案:

答案 0 :(得分:0)

道歉以复活一个长死的话题,但是最近我遇到了同样的问题,并且能够通过修改Flasch在主循环内调用的predict()函数来解决这个问题。该解决方案主要涉及删除其中的with()子句。如果它仍然使您感兴趣(极不可能,但仍然可以),我可以告诉您。