当我运行以下代码时,数据集中的所有变量都将被删除,
data <- data[, -nearZeroVar(data)]
我对 R 相当陌生,我的期望是上面的代码将删除数据集中的近零方差预测变量,实际上数据中没有近零方差预测变量,所以我认为它会保持数据集不变,但事实并非如此。
运行脚本时,我并不总是知道预测变量是否接近零方差预测变量......我如何修改代码以将其添加到脚本中,以检查是否存在接近零方差预测变量以及是否存在没有一个预测变量是接近零方差的预测变量,那么它应该按原样保留数据集。
以下代码重现了这种情况。
library(caret)
data(GermanCredit)
# remove the near-zero var predictors
GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)]
# but now if i redo the above command it removes all the predictors from the data set.
GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)]
# all predictors removed
在某些情况下,我们可能不知道数据集不包含任何接近零方差的预测变量。
更新
@LauriK,topepo(Max):还有一个愚蠢的问题,
GermanCredit <- GermanCredit[, -nearZeroVar(GermanCredit)]`
我想如果我把上面的代码写成
GermanCredit <- GermanCredit[, -integer(0)]
由于integer(0)
之前有一个(-)符号,因此它应该删除integer(0)
,它什么也没有,所以它应该删除任何内容并保留数据集就这样。
我知道我可能在这里缺少一个非常基本的概念,但我想学习。
最佳答案
先保存对象:
nzv_cols <- nearZeroVar(GermanCredit)
if(length(nzv_cols) > 0) GermanCredit <- GermanCredit[, -nzv_cols]
最大
关于r - 插入符号中的 closeZeroVar 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043393/