2015-08-13 17 views
7

Una domanda relativamente semplice, ma la risposta sembra essermi sfuggita. Attualmente, ho un frame di dati, che è simile a questo:Unlist un frame di dati per righe, non per colonne

0 0 0 1 1 
0 1 0 1 1 
2 1 1 0 3 

Sto cercando di trasformare questo in una sola riga di dati, per righe. Ho usato la funzione unlist, e ha fatto ciò che volevo, ma me li ha dati per colonne. Mi ha dato questo:

0,0,2,0,1,1,0,0,1,1,1,0,1,1,3 

ma quello che voglio è questo:

0,0,0,1,1,0,1,0,1,1,2,1,1,0,3 

Mi scuso se questa sembra una domanda stupida, ma io sono ancora un novizio con R. Qualsiasi aiuto (o referral a funzioni che potrebbero aiutarmi a elaborare questo) sarebbe molto apprezzato.

risposta

13

Possiamo prendere la trasposizione (t) del set di dati e quindi utilizzare c per ottenere un output vettoriale

c(t(df1)) 
#[1] 0 0 0 1 1 0 1 0 1 1 2 1 1 0 3 

Facendo recepire, convertiamo il 'data.frame' a 'matrice'. In entrambe le operazioni data.frame o matrix, le operazioni unlist/c avvengono in senso orario. Quindi, trasporre lo scambio delle colonne per le righe e viceversa e otteniamo il risultato atteso.

+1

incredibilmente semplice. Grazie per la sua pronta risposta! –

0

Si può provare anche as.vector():

x<-matrix(c(0,0,2,0,1,1,0,0,1,1,1,0,1,1,3),3,5) 

x 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 0 0 0 1 1 
[2,] 0 1 0 1 1 
[3,] 2 1 1 0 3 

as.vector(t(x)) 
[1] 0 0 0 1 1 0 1 0 1 1 2 1 1 0 3 
Problemi correlati