2016-09-10 6 views
0

Ich versuche, einige Listenobjekte (z. B. 4 Tabellen der Häufigkeitszählung) in eine Matrix zu zwingen, indem Sie rbind ausführen. Sie haben jedoch ungleiche Spalten (d. H. Einige liegen im Bereich von 2 bis 5, während andere im Bereich von 1: 5 liegen). Ich möchte so anzeigen, dass, wenn eine Tabelle nicht mit einer Spalte von 1 beginnt, NA in dieser Zeile in der nachfolgenden rbind-Matrix angezeigt wird. Ich habe den folgenden Ansatz versucht, aber die Werte wiederholen sich in der Reihe, anstatt NAs anzuzeigen, wenn es nicht existiert. Ich dachte rbind.fill, aber es erfordert für die Tabelle ein Datenrahmen. Ich könnte einige Loops kreieren, aber im Geiste von R frage ich mich, ob es einen anderen Ansatz gibt, den ich verwenden könnte?Forcieren von Rbind mit ungleichmäßigen Spalten in R

# Example 
a <- sample(0:5,100, replace=TRUE) 
b <- sample(2:5,100, replace=TRUE) 
c <- sample(1:4,100, replace=TRUE) 
d <- sample(1:3,100, replace=TRUE) 

list <- list(a,b,c,d) 
table(list[4]) 

count(list[1]) 
matrix <- matrix(ncol=5) 
lapply(list,(table)) 

do.call("rbind",(lapply(list,table))) 
+0

Vielleicht die Antworten [hier] (http://stackoverflow.com/questions/17308551/do -callrbind-list-für-ungerade-Anzahl der Spalte? Rq = 1) kann helfen. – Sraffa

Antwort

0

Wenn ich ein ähnliches Problem haben, schließe ich alle Werte, die ich in den Vektor wollen und subtrahieren Sie dann eins aus dem Ergebnis

table(c(1:5, a)) - 1 

Diese in eine Funktion gemacht werden konnte

table2 <- function(x, values, ...){ 
    table(c(x, values), ...) - 1 
} 

Natürlich wird dies Nullen anstatt NA

Verwandte Themen