在R中运行glmnet包,得到错误"缺少需要TRUE / FALSE的值",可能是由于缺少值?

时间:2015-01-27 14:16:10

标签: r glmnet

我正在尝试使用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文档中排除NA的选项。

1 个答案:

答案 0 :(得分:4)

由于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)