Entfernen von NA aus der Liste der Listen
Ich habe eine matrix von Daten.mat, das sieht aus wie:
A B C D E
45 43 45 65 23
12 45 56 NA NA
13 4 34 12 NA
Ich versuche, diesen in eine Liste von Listen, wobei jede Zeile ist eine Liste innerhalb einer größeren Liste. Ich Tue das folgende:
list <- tapply(data.mat,rep(1:nrow(data.mat),ncol(data.mat)),function(i)i)
gibt mir eine Liste von Listen mit NAs aufgenommen, wie:
$`1`
[1] 45 43 45 65 23
$`2`
[1] 12 45 56 NA NA
$`3`
[1] 13 4 34 12 NA
Aber was ich sagen will ist:
$`1`
[1] 45 43 45 65 23
$`2`
[1] 12 45 56
$`3`
[1] 13 4 34 12
Ist es ein guter Weg, um entfernen Sie den NAs während der tapply-Aufruf oder nach der Tat?
Nicht verwenden Sie Variablennamen wie
Guter Punkt. Ich normalerweise nicht-ich war nur versucht, um es generische für das Beispiel. Aber das ist gut zu merken, da bin ich schlampig über Namenskonventionen manchmal.
list
wie es ist verwendet werden, in der R für Listen.Guter Punkt. Ich normalerweise nicht-ich war nur versucht, um es generische für das Beispiel. Aber das ist gut zu merken, da bin ich schlampig über Namenskonventionen manchmal.
InformationsquelleAutor Amberopolis | 2014-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sicher, Sie verwenden können
lapply
wie diese:lapply(list, function(x) { x[is.na(x)] <- 0; return(x) })
(nicht getestet)InformationsquelleAutor rsoren
Beispieldaten:
Split mit der Zeile:
Entfernen NAs:
oder
Alles auf einen Schlag:
list
format, auch wenn es keineNA
s in den Daten.InformationsquelleAutor flodel
Könnte man dies tun:
Ausgabe:
Wenn Sie nicht möchten, dass Namen:
Wenn es die Möglichkeit gibt, dass jede Zeile die gleiche Anzahl von NAs, es wird sicherer, zu verwenden:
lapply(split(data.mat, 1:nrow(data.mat)), function(x) unname(x[!is.na(x)]))
ist ein bisschen mehr identisch mit den "gewünschten" - Ausgabe, aber beide enthalten die gleichen Informationen.Wahr. Ich fühle keine Scham dabei, die
unname
Teil übereinstimmen, dass dieser Aspekt besser, aber Sie möchten per post verkaufen als separate Antwort. Oder ich könnte hinzufügen, dass es mir, wenn Sie nicht geneigt ist. Ich habe keine Scham. 😉Ich persönlich glaube, dass Ihre spezifische Form ist wahrscheinlich nützlicher und Vertreter der echten Daten. Ich bin in Ordnung verlassen, es als Kommentar.
Ja, du brauchst die
x
in der front. Ich bin mir nicht ganz sicher, was passiert mit den Bearbeitungen. Ich muss einen Fehler gemacht haben.InformationsquelleAutor Jota