运行 R 中的 glmnet 包,出现错误 "missing value where TRUE/FALSE needed",可能是由于缺少值?
Running glmnet package in R, getting error "missing value where TRUE/FALSE needed", maybe due to missing values?
我正在尝试使用 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
s 的选项。
由于 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)
我正在尝试使用 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
s 的选项。
由于 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)