【发布时间】:2019-09-13 05:43:40
【问题描述】:
这很简单,下面的 rfe 函数会抛出此错误:“rfe.default(predictors, as.vector(outcomes), sizes = c(5), rfeControl = rfeControl(functions = "lmFuncs", : there x 和 y 的样本数应该相同”
df 第一列是具有 2 个级别的因子。其余的 df 列是数字的。没有 NA 值。
我一点也不知道这个错误是关于什么的。我已经尝试了一些其他的解决方案,但无济于事。
rfe_linear <- caret::rfe(
df[ , -1 ],
df[ , 1 ],
sizes = c( 5 ),
rfeControl = rfeControl(
functions = 'lmFuncs',
method = 'boot',
number = 20
)
)
我尝试了下面的,它给出了同样的错误。
rfe_linear <- caret::rfe(
as.matrix( df[ , -1 ] ),
df[ , 1 ],
sizes = c( 5 ),
rfeControl = rfeControl(
functions = 'lmFuncs',
method = 'boot',
number = 20
)
)
尝试以下。抛出此错误:“错误:必须使用[ 中的向量,而不是类矩阵的对象。”
rfe_linear <- caret::rfe(
as.matrix( df[ , -1 ] ),
as.factor( df[ , 1 ] ),
sizes = c( 5 ),
rfeControl = rfeControl(
functions = 'lmFuncs',
method = 'boot',
number = 20
)
)
还尝试了以下方法,抛出此错误:“错误:$ 运算符对原子向量无效”。说我疯了,但我在代码中的任何地方都没有看到 $ 运算符。
rfe_linear <- caret::rfe(
df[ , -1 ],
df[[ 1 ]],
sizes = c( 5 ),
rfeControl = rfeControl(
functions = 'lmFuncs',
method = 'boot',
number = 20
)
)
我已经尝试了 as.factor()、as.data.frame()、as.matrix()、df[、1]、df[、-1]、df[、2:ncol( df )] 和 df[, 1:1 ] 可以想到的。
然后我尝试了这个:
rfe_linear <- caret::rfe(
df[ , -1 ],
df$Phenotype,
sizes = c( 5 ),
rfeControl = rfeControl(
functions = 'lmFuncs',
method = 'boot',
number = 20
)
)
这似乎运行了一段时间,但当然,R 不会让我轻易地运行 rfe(),所以在日志的末尾它又抛出了另一个错误,并且 rfe_linear 对象是还没找到。
+(rfe) fit Resample01 size: 5191
-(rfe) fit Resample01 size: 5191
+(rfe) imp Resample01
-(rfe) imp Resample01
+(rfe) fit Resample02 size: 5191
-(rfe) fit Resample02 size: 5191
+(rfe) imp Resample02
-(rfe) imp Resample02
+(rfe) fit Resample03 size: 5191
-(rfe) fit Resample03 size: 5191
+(rfe) imp Resample03
-(rfe) imp Resample03
+(rfe) fit Resample04 size: 5191
-(rfe) fit Resample04 size: 5191
+(rfe) imp Resample04
-(rfe) imp Resample04
+(rfe) fit Resample05 size: 5191
-(rfe) fit Resample05 size: 5191
+(rfe) imp Resample05
-(rfe) imp Resample05
+(rfe) fit Resample06 size: 5191
-(rfe) fit Resample06 size: 5191
+(rfe) imp Resample06
-(rfe) imp Resample06
+(rfe) fit Resample07 size: 5191
-(rfe) fit Resample07 size: 5191
+(rfe) imp Resample07
-(rfe) imp Resample07
+(rfe) fit Resample08 size: 5191
-(rfe) fit Resample08 size: 5191
+(rfe) imp Resample08
-(rfe) imp Resample08
+(rfe) fit Resample09 size: 5191
-(rfe) fit Resample09 size: 5191
+(rfe) imp Resample09
-(rfe) imp Resample09
+(rfe) fit Resample10 size: 5191
-(rfe) fit Resample10 size: 5191
+(rfe) imp Resample10
-(rfe) imp Resample10
+(rfe) fit Resample11 size: 5191
-(rfe) fit Resample11 size: 5191
+(rfe) imp Resample11
-(rfe) imp Resample11
+(rfe) fit Resample12 size: 5191
-(rfe) fit Resample12 size: 5191
+(rfe) imp Resample12
-(rfe) imp Resample12
+(rfe) fit Resample13 size: 5191
-(rfe) fit Resample13 size: 5191
+(rfe) imp Resample13
-(rfe) imp Resample13
+(rfe) fit Resample14 size: 5191
-(rfe) fit Resample14 size: 5191
+(rfe) imp Resample14
-(rfe) imp Resample14
+(rfe) fit Resample15 size: 5191
-(rfe) fit Resample15 size: 5191
+(rfe) imp Resample15
-(rfe) imp Resample15
+(rfe) fit Resample16 size: 5191
-(rfe) fit Resample16 size: 5191
+(rfe) imp Resample16
-(rfe) imp Resample16
+(rfe) fit Resample17 size: 5191
-(rfe) fit Resample17 size: 5191
+(rfe) imp Resample17
-(rfe) imp Resample17
+(rfe) fit Resample18 size: 5191
-(rfe) fit Resample18 size: 5191
+(rfe) imp Resample18
-(rfe) imp Resample18
+(rfe) fit Resample19 size: 5191
-(rfe) fit Resample19 size: 5191
+(rfe) imp Resample19
-(rfe) imp Resample19
+(rfe) fit Resample20 size: 5191
-(rfe) fit Resample20 size: 5191
+(rfe) imp Resample20
-(rfe) imp Resample20
Error in { : task 1 failed - "replacement has 1 row, data has 0"
In addition: There were 50 or more warnings (use warnings() to see the first 50)
【问题讨论】:
-
文档建议
sizes应该是一个向量? -
@SimonWoodward 感谢您的回复。我尝试将
5传递给size参数,而不是将c(5)传递给sizes参数,仍然抛出上面看到的所有错误。 -
@SimonWoodward 我意识到只有将
lmFuncs传递给functions参数时才会出现错误。我不确定这表明什么。 -
当
y是一个因素时,我猜lmFuncs是不合适的。当y不是一个因素时,您的代码可以工作。