2012-10-26 18 views
7

Ho informazioni che sono contenute in vettori, ad esempio:Come aggiungere dati per colonne nel file csv usando R?

sequence1<-seq(1:20) 
sequence2<-seq(21:40) 
... 

voglio accodare i dati in un file, in modo da sto usando:

write.table(sequence1,file="test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 
write.table(sequence2,file="test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 

Ma il problema è che questa è aggiunto tutto in una colonna come:

1 
2 
3 
... 
21 
22 
... 
40 

voglio aggiungere che i dati in colonne in modo che finisce come:

1   21 
2   22 
3   23 
...  ... 
20  40 

Come posso farlo utilizzando R?

+2

Non è possibile aggiungere colonne a un file CSV. È necessario riscrivere ogni riga ogni volta che si desidera aggiungere una colonna. Questo non ha nulla a che fare con R; è come il file è archiviato su disco. –

risposta

6

write.table scrive un data.frame o matrice in un file. Se volete scrivere un due data.frame due colonne (o matrice) in un file utilizzando write.table, allora avete bisogno di creare un tale oggetto nella R

x <- data.frame(sequence1, sequence2) 
write.table(x, file = 'test.csv', row.names=FALSE,col.names=FALSE) 

Vedere ?write.table per una chiara descrizione di ciò che la funzione di lo fa.

Come affermato dal commento di @JoshuaUlrich, questo non è realmente un problema R, non è possibile aggiungere una colonna a un file CSV a causa del modo in cui è memorizzata su disco.

7

Mentre non è possibile aggiungere la colonna direttamente sul file, si può leggere in un data.frame, aggiungere la colonna ad esso, e scrivere il risultato in un file CSV:

tmp <- read.csv("original_file.csv") 
tmp <- cbind(tmp, new_column) 
write.csv(tmp, "modified_file.csv") 
2

Se si desidera per scrivere il file come si va (ad esempio in un loop):

seq1<-t(seq(1,20,1)) 
seq2<-t(seq(21,40,1)) 

write.table(seq1,"test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 
write.table(seq2,"test.csv",sep=",",append=TRUE,row.names=FALSE,col.names=FALSE) 

Quindi trasporre il file alla fine. Se si vuole fare tutto in una volta:

test<-t(rbind(seq1,seq2)) 
write.csv(test, "test.csv") 
2

Controllare il codice seguente,

seq1 <- seq(1:20) 
seq2 <- seq(21:40) 
bind <- cbind(seq1,seq2) 
write.csv(bind,file = "Your_path", append = TRUE) 

funziona questo codice.

Problemi correlati