我有以下功能:
logModels <- function(data_idx_list,data)
{
x <- lapply(data_idx_list, function(m)
sparse.model.matrix(~.,data = data[m,]))
y <- lapply(data_idx_list, function(m) data$earlyR[m])
logM <- mapply(function(x,y) {
cv.glmnet(x=x,y=y,family="binomial",alpha=0)
}, x,y)
return(logM)
}
其中x
包含5个数据样本,y
是我的因变量。当我尝试使用mapply
时,我收到以下错误:
glmnet中的错误(x,y,权重=权重,偏移=偏移,lambda = lambda,: y(1)中的观测数不等于x(100000)的行数
但是,当我按照以下方式运行模型时,它可以工作:
lm1 = cv.glmnet(x=x[[1]],y=y,family="binomial",alpha=0)
所以,我认为我在x
函数中接近mapply
的方式遇到了一些麻烦。
我们将不胜感激。
答案 0 :(得分:0)
如果我正确理解您的问题,您只需将y
打包成list
:
logM <- mapply(function(x, y) cv.glmnet(x, y, family = "binomial", alpha = 0),
x, list(y))
否则y
的各个元素将被传递给glm函数的连续调用。
另一种更简洁的写作方式:
logM <- mapply(cv.glmnet, x = x, y = list(y), family = "binomial", alpha = 0))