"promise already under evaluation" R 插入符的 rfe 函数错误
"promise already under evaluation" error in R caret's rfe function
我有一个矩阵 X
和向量 Y
,我将它们用作 caret
包中 rfe
函数的参数。就这么简单:
我收到一个我无法破译的奇怪错误:
promise already under evaluation: recursive default argument reference or earlier problems?
编辑:
这是我数据前 5 行的可重现示例:
library(caret)
X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)
rfe(X, Y)
我的R版本是3.2.3。插入符号包为 6.0-76。
有人知道这是什么吗?
您的代码有两个问题。
- 您需要指定要适合的function/algorithm。 (这就是导致您收到错误消息的原因。我不确定为什么
rfe
会抛出这样一条神秘的错误消息;确实,这使得调试变得困难。)
- 您需要在输入数据中命名您的列。
以下作品:
library(caret)
X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)
ctrl <- rfeControl(functions = lmFuncs)
colnames(X) <- letters[1:ncol(X)]
set.seed(123)
rfe(X, Y, rfeControl = ctrl)
我为 rfe 选择了线性模型。
出现警告消息的原因是交叉验证期间您的数据中的观察数量很少。您可能还想设置 sizes
参数以获得有意义的特征消除。
我有一个矩阵 X
和向量 Y
,我将它们用作 caret
包中 rfe
函数的参数。就这么简单:
我收到一个我无法破译的奇怪错误:
promise already under evaluation: recursive default argument reference or earlier problems?
编辑: 这是我数据前 5 行的可重现示例:
library(caret)
X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)
rfe(X, Y)
我的R版本是3.2.3。插入符号包为 6.0-76。
有人知道这是什么吗?
您的代码有两个问题。
- 您需要指定要适合的function/algorithm。 (这就是导致您收到错误消息的原因。我不确定为什么
rfe
会抛出这样一条神秘的错误消息;确实,这使得调试变得困难。) - 您需要在输入数据中命名您的列。
以下作品:
library(caret)
X_values = c(29.04,96.57,4.57,94.23,66.81,26.71,69.01,77.06,49.52,97.59,47.57,64.07,24.25,11.27,77.30,90.99,44.05,30.96,96.32,16.04)
X = matrix(X_values, nrow = 5, ncol=4)
Y = c(5608.11,2916.61,5093.05,3949.35,2482.52)
ctrl <- rfeControl(functions = lmFuncs)
colnames(X) <- letters[1:ncol(X)]
set.seed(123)
rfe(X, Y, rfeControl = ctrl)
我为 rfe 选择了线性模型。
出现警告消息的原因是交叉验证期间您的数据中的观察数量很少。您可能还想设置 sizes
参数以获得有意义的特征消除。