2016-04-26 14 views
0

Ich habe eine Liste von 20 Unterlisten mit dem Namen pval, jede Unterliste pval[[i]] enthält mehrere Spalten. Ich mag eine neue Spalte hinzuzufügen pval[[i]]$class zu markieren, ob das Element des Vektors causal_snp in der Spalte erscheint X4 jede Unterliste, wenn ja, Zeichen 1 in der neuen Spalte, sonst 0.Verwenden Sie lapply, um eine Liste der Liste zu bearbeiten

for (i in 1:20){ 
    pval[[i]]$class = ifelse(pval[[i]]$X4 %in% causal_snp, 1, 0) 
    pval[[i]]$class = as.factor(pval[[i]]$classe) 
} 

Die Schleife oben funktioniert gut, aber ich würde lapply statt for-Schleife die Funktion gerne nutzen, hier ist das, was ich versucht habe, aber die Ausgabe enthält nur die neue Spalte für jede Unterliste:

pval_bis <- lapply(pval, function(x) x$classe=ifelse(x$X4 %in% causal_snp, 1, 0)) 

Was kann ich ändern in lapply Funktion, um alle meine Spalten in der Unterliste zu behalten und die neue Spalte in jeder Unterliste hinzuzufügen? Vielen Dank.

+0

Können Sie Daten zurückgeben müssen für ein reproduzierbares Beispiel? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – DeveauP

Antwort

1

Wenn wir lapply, erstellen Sie die Spalte mit transform

lapply(pval, transform, classe = as.integer(X4 %in% causal_snp)) 

In den Code des OP, nach der Zuweisung verwenden, wir x

lapply(pval, function(x) {x$classe=ifelse(x$X4 %in% causal_snp, 1, 0);x}) 
Verwandte Themen