我正在尝试使用插入符号包中的varImp函数按重要性对功能进行排名。这就是我所拥有的:
ctrl <- trainControl(method = "LGOCV", savePred=T)
mod <- train(Group~., data=metrics, method = "svmLinear", trControl = ctrl)
importance <- varImp(mod, scale=FALSE)
但是varImp函数在Traceback中给了我这个错误:
Error: $ operator is invalid for atomic vectors
5.
FUN(newX[, i], ...)
4.
apply(x, 2, testFunc, y = y)
3.
filterVarImp(x_dat, y_dat, nonpara = nonpara, ...)
2.
varImp.train(mod, scale = FALSE)
1.
varImp(mod, scale = FALSE)
我以为我所做的一切都与文档一样。我是R和插入符号的新手,所以这真的使我感到困惑。感谢您的任何帮助。
编辑:感谢您对问题的建议!对于数据集,我认为我不允许将其发布到任何地方,因此我手动生成了一个较小的矩阵,该矩阵仍会再现上述错误。
Group f1 f2 f3 f4 f5
0 5377.8 3506.9 1999.3 1659.9 448.7
0 7963.4 4016 931.2 970 468
0 5175.2 2449.8 802 1191.7 110.2
0 6542 2198 938.8 965.5 115.1
1 5641.2 3936.1 1639.5 1206 520.7
1 8136.8 3527.7 1931 1765.1 582.4
1 7195.5 2496.2 1650.8 1387 406.3
我用过
metrics$Group <- as.factor(metrics$Group)
将“组”列设置为分类变量。