在R

时间:2017-02-13 17:46:33

标签: r logistic-regression mapply

我有以下功能:

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的方式遇到了一些麻烦。

我们将不胜感激。

1 个答案:

答案 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))