2017-02-13 4 views
0

Ich habe die folgende Funktion:Lauf logistisches Modell mapply in R mit

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) 

} 

wo x enthält 5 Proben von Daten und y ist mein abhängige Variable. Wenn ich versuche, mapply zu verwenden ich die folgende Fehlermeldung erhalten:

Error in glmnet(x, y, weights = weights, offset = offset, lambda = lambda, : number of observations in y (1) not equal to the number of rows of x (100000)

Aber, wenn ich das Modell renne wie folgt funktioniert:

lm1 = cv.glmnet(x=x[[1]],y=y,family="binomial",alpha=0) 

Also gehe ich davon aus ich habe einige Probleme mit der Art, wie ich mich x in meiner mapply Funktion annähere.

Ihre Hilfe wird geschätzt.

Antwort

0

Wenn ich Ihr Problem richtig zu verstehen, müssen Sie einfach y in eine list wickeln:

logM <- mapply(function(x, y) cv.glmnet(x, y, family = "binomial", alpha = 0), 
       x, list(y)) 

Ansonsten einzelne Elemente y an aufeinander folgenden Anrufungen Ihrer GLM-Funktion übergeben.

Ein weiterer, prägnanter Art und Weise des Schreibens dieser:

logM <- mapply(cv.glmnet, x = x, y = list(y), family = "binomial", alpha = 0)) 
+0

Vielen Dank für Ihre Antwort .. aber aus irgendeinem Grund funktioniert es nicht .. Ich habe versucht, die Syntax zu verwenden, und ich bin das immer Folgefehler: _Error in glmnet (x, y, Gewichte = Gewichte, Offset = Offset, Lambda = Lambda,: Anzahl der Beobachtungen in y (5) ungleich der Anzahl der Zeilen von x (100000) _ (Ich habe es auch versucht "x = list (x)' stattdessen zu verwenden, und ich bekomme den folgenden Fehler: _Error in rep (1, N): ungültiges 'mal' argument_). Ich glaube, dass es irgendwie mit dem _indexing_ Teil verbunden ist. Zum Beispiel wenn ich es mit einer Schleife benutze, logM2 [[i]] = cv.glmnet (x = x [[i]], y = y [[i]], familie = "binomial", alpha = 0) 'Es funktioniert – staove7

Verwandte Themen