如何使用 R 按列向 CSV 文件中添加数据?

8

我有一些存储在向量中的信息,例如:

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

我希望将这些数据追加到一个文件中,因此我使用以下代码:
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)

但问题在于,所有这些内容都添加在一个类似于以下的列中:
1
2
3
...
21
22
...
40

我想在列中添加数据,使它最终变成这样:
1         21
2         22
3         23
...       ...
20        40

我该如何使用R实现这个?

3
你不能向 CSV 文件追加列,每次想要添加列时必须重新编写每一行。这与 R 无关,而是文件在磁盘上存储的方式决定的。 - Joshua Ulrich
4个回答

12

虽然无法直接在文件中添加列,但可以将其读入数据框中,将列附加到其中,并将结果写入csv文件:

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

6

write.table函数可以把data.frame或matrix写入文件。如果你想使用write.table将一个二列的data.frame(或matrix)写入文件,那么你需要在R中创建这样一个对象。

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

请参考?write.table,获取有关该函数功能的详细描述。

正如 @JoshuaUlrich 评论中所述,这并不是 R 的问题,由于CSV文件在磁盘上存储的方式,无法向其追加列。


3
如果您想在执行循环操作时逐步写入文件,请使用以下代码:
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)

然后在结尾处转置文件。 如果你想一次性完成所有操作:

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

3
请检查以下代码:
seq1 <- seq(1:20)
seq2 <- seq(21:40)
bind <- cbind(seq1,seq2)
write.csv(bind,file = "Your_path", append = TRUE)

这段代码可正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接