r - 插入符号中的 closeZeroVar 函数

标签 r r-caret

当我运行以下代码时,数据集中的所有变量都将被删除,

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/

相关文章:

r - 如何在ggplot的箱线图中按组绘制均值

r - 将 json/data 传递给 Shiny 的 javascript 对象

r - 使用 glmnet 和 2 个类时,插入符号中的训练函数出错

r - C50 通过插入符号包苦苦挣扎

r - 如何计算插入符号中准确度和 kappa 的 95% CI

r - 带有 ggplot 图形的 knitr 文档中的动画

r - 创建依赖于遵循有序序列的 ID 的虚拟变量

r - 惰性计算 : Why can't I use plot(. .., xlim = c(0,1), ylim = xlim)?

linux - 无法在 R 中安装插入符包(在我的 Linux 机器中)

r - 对于 > 2 个类别的结果,插入符训练方法不起作用(所有准确度结果都有问题)