【发布时间】:2018-03-25 04:22:01
【问题描述】:
我正在尝试在 R 中运行符号回归,并在训练和测试数据上使用 rgp 包中定义的 symbolicRegression 和 predict 函数。我的训练和测试数据都是具有相同列名的数据框。 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"
【问题讨论】:
-
rgp 包?
-
rdocumentation.org/packages/rgp/versions/0.4-1。它曾经是 CRAN 存储库的一部分,但不再可从 CRAN 获得。据我所知,这是 R 中唯一可用于符号回归的包。
-
如果您可以发布您的数据子集,以便此问题可重现,并且我们也可以在我们的机器上运行它,那么提供有用的建议会容易得多。谢谢:)
-
@mysteRious 谢谢。刚刚添加。
-
我现在确实遇到了同样的错误,但是该软件包在 4 年前被其作者放弃,并且在软件包说明文件中列出的支持网站无处可寻。
traceback()结果表明作者在他的函数中使用了with,这是一个臭名昭著的错误来源,因为对象名称是从列名称创建的,然后与它们的环境分离。
标签: r dataframe regression formula