2012-10-26 7 views
7

Ich habe Informationen, die in Vektoren enthalten ist, zum Beispiel:Wie fügt man Daten nach Spalten in der CSV-Datei mit R hinzu?

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

ich, dass die Daten in eine Datei angehängt werden soll, so dass ich bin mit:

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) 

Aber das Problem ist, dass dies hinzugefügt alle in einer Spalte wie:

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

ich so, dass die Daten in den Spalten hinzufügen möchten, dass es wie endet:

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

Wie kann ich das mit R tun?

+2

Sie können keine Spalten an eine CSV-Datei anhängen. Sie müssen jede Zeile jedes Mal neu schreiben, wenn Sie eine Spalte hinzufügen möchten. Das hat nichts mit R zu tun; So wird die Datei auf der Festplatte gespeichert. –

Antwort

6

write.table schreibt einen data.frame oder eine Matrix in eine Datei. Wenn Sie zwei wollen, schreiben Sie eine zweispaltige data.frame (oder Matrix) in eine Datei write.table verwenden, dann müssen Sie ein solches Objekt zu schaffen, in R

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

Siehe ?write.table für eine sehr klare Beschreibung dessen, was die Funktion tut.

Wie von @ JoshuaUlrich Kommentar festgestellt, ist dies nicht wirklich ein R Problem, Sie können nicht eine Spalte an eine CSV-Datei aufgrund der Art, wie es auf der Festplatte gespeichert ist.

7

Sie können zwar nicht die Spalte direkt auf die Datei hinzufügen, können Sie es in eine data.frame, hängen Sie an Spalte es, lesen und das Ergebnis als eine CSV-Datei schreiben:

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

Wenn Sie möchten, die Datei zu schreiben, wie Sie (in einer Schleife zum Beispiel) gehen:

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) 

dann die Datei am Ende umsetzen. Wenn Sie wollen alles auf einmal tun:

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

Überprüfen Sie auf der folgenden Code,

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

Dieser Code funktioniert.

Verwandte Themen