2011-12-11 10 views
5

Sto cercando di scrivere una funzione per estrarre le frequenze di questa tabella:Come estrarre i conteggi come vettore da una tabella in R?

0 1 2 3 4 5 6 7 
30 22 9 12 2 5 1 16 

quindi voglio ottenere c(30, 22, 9, 12, 2, 5, 1, 16).

La tabella cambia ogni volta che eseguo la funzione, quindi ho bisogno di qualcosa che possa estrarre automaticamente le informazioni dalla tabella, quindi non ho mai scritto una funzione c().

risposta

14

Onestamente non potrebbe essere più semplice. Se non è possibile calcolare questo fuori, si avrà sacco di altri problemi:

> set.seed(42)       ## be reproducible 
> X <- sample(1:5, 50, replace=TRUE) ## our data 
> table(X)        ## our table 
X 
1 2 3 4 5 
7 6 9 10 18 
> str(table(X))       ## look at structure of object 
'table' int [1:5(1d)] 7 6 9 10 18 
- attr(*, "dimnames")=List of 1 
    ..$ X: chr [1:5] "1" "2" "3" "4" ... 
> as.numeric(table(X))     ## and just convert to vector 
[1] 7 6 9 10 18 
> 

E per completezza, altri due modi per ottenere i dati:

> unname(table(X))      ## jdropping names reduces to the vector 
[1] 7 6 9 10 18 
> table(X)[]       ## or simply access it 
[1] 7 6 9 10 18 
> 
+0

Sì dispiace Im nuovo a R. ' table 'int [1 (1d)] 1 - attr (*, "dimnames") = Elenco di 1 .. $ T: chr "TRUE" Ecco la struttura che ottengo per il tavolo che ho.Im non so perché. – user1021000

+0

Quindi forse l'oggetto su cui è stato eseguito 'table()' aveva solo un valore. Rieseguire il codice nella mia risposta alla fine e cercare di capire le cose. –

+0

Grazie, ho capito. Mi ha aiutato molto qui! – user1021000

Problemi correlati