2014-02-13 12 views
5

Da eine Funktion, die ich verwende, ein Tabellenobjekt als Parameter benötigt, möchte ich ein mehrdimensionales Array in eine Tabelle konvertieren, aber ich habe Probleme mit Dimensionsnamen. Wie in der Hilfedatei as.table angegeben, sollte der Parameter dnn dimnames-Namen enthalten.R: Dimensionsnamen in Tabellen und mehrdimensionalen Arrays

dnn … the names to be given to the dimensions in the result (the dimnames names). 

Aber selbst wenn dnn Angabe, meine Tabellen von as.table produziert haben keine Dimensionsnamen.

Der folgende Code veranschaulicht mein Problem.

>test <- table(c("a","b","c","c","c"),c("1","2","3","2","2"),dnn=c("letters","numbers")) 
>test 

      numbers 
letters 1 2 3 
     a 1 0 0 
     b 0 1 0 
     c 0 2 1 

# this works perfectly 

jetzt das gleiche versuchen, wenn die Tabelle aus einem Array Konstruktion:

>my2dimdata <- array(c(1,0,0,0,1,2,0,0,1),dim=c(3,3), 
        dimnames=list(c("a","b","c"), 
            c("1","2","3"))) 
>my2dimdata 

    1 2 3 
a 1 0 0 
b 0 1 0 
c 0 2 1 

# the array as expected 

>my2dimtable <- as.table(my2dimdata,dnn=c("letters","numbers")) 
>my2dimtable 

    1 2 3 
a 1 0 0 
b 0 1 0 
c 0 2 1 

# there are no dimnames 

Antwort

11

as.table kein dnn Argument hat. Sie müssen die Dimnamen manuell festlegen.

my2dimdata <- array(c(1,0,0,0,1,2,0,0,1),dim=c(3,3), 
        dimnames=list(c("a","b","c"), 
            c("1","2","3"))) 

my2dimdata <- as.table(my2dimdata) 
names(attributes(my2dimdata)$dimnames) <- c("letters","numbers") 

#  numbers 
# letters 1 2 3 
#  a 1 0 0 
#  b 0 1 0 
#  c 0 2 1 
+0

Vielen Dank! Beachten Sie auch, dass 'names (attributes (my2dimdata) $ dimnames) 'sich auf diese fraglichen Dimnamen bezieht, während' dimnames (my2dimdata) 'etwas völlig anderes ist. – mzuba

Verwandte Themen