【问题标题】:Running glmnet package in R, getting error "missing value where TRUE/FALSE needed", maybe due to missing values?在 R 中运行 glmnet 包,得到错误“需要 TRUE/FALSE 的缺失值”,可能是由于缺失值?
【发布时间】:2015-03-26 04:38:59
【问题描述】:

我正在尝试使用 glmnet 包中的 glmnet 来运行 LASSO 回归。

我正在使用以下命令:

library(glmnet)
glmnet(a,b,family="binomial",alpha=1)

我得到了错误:

> Error in if (!all(o)) { : missing value where TRUE/FALSE needed

a 是一个带有数值的矩阵。 b 是一个以因子为值的向量。

但是,b 有一些缺失值。我怀疑这可能是导致错误的原因。但是,我在 glmnet 文档中没有看到排除 NAs 的选项。

【问题讨论】:

  • 能否在运行glmnet 后添加dput(a)dput(b) 以及traceback() 以帮助我们进行复制和诊断?
  • 您尝试预测的课程中有 NA

标签: r glmnet


【解决方案1】:

由于glmnet 不接受带有公式的完整数据框(因此没有 na.omit),而是使用单独的响应矩阵和预测矩阵,因此您必须找出 b 中缺少哪些值,并且然后子集您的预测矩阵以排除这些行。

library(glmnet)

set.seed(123)
a <- matrix(rnorm(100*20),100,20)
b <- as.factor(sample(0:1,100,replace = TRUE))

b[10] <- NA

na_index <- is.na(b)
res <- glmnet(a[!na_index, ], b[!na_index], family = "binomial", alpha = 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2017-05-09
    • 2015-06-28
    • 2019-03-07
    相关资源
    最近更新 更多