5

我正在尝试使用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有一些缺失值。我怀疑这可能是导致错误的原因。NA但是,我在 glmnet 文档中没有看到排除 s 的选项。

4

1 回答 1

5

由于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)
于 2015-01-27T15:22:51.220 回答