我已经查看了几个能够将文本添加到现有数据文件(.csv或.txt)的函数,例如write.table,write.lines或sink.
当append参数= TRUE时,新数据总是在文件的最后一个现有行之后添加.是否可以将数据添加到第一行(标题下方)的现有文件中 - AKA与追加相反?
给定一个数据框:
DF <- as.data.frame(matrix(seq(20),nrow=5,ncol=4))
colnames(DF) <- c("A", "B", "C", "D")
write.table(DF, "DF.csv", row.names=FALSE, sep=",")
Run Code Online (Sandbox Code Playgroud)
我可以像这样在最后一行添加一个新数据框
A <- 1
A <- data.frame(A)
A$B <- 1
A$C <- 1
A$D <- 1
write.table(A, "DF.csv", row.names=FALSE, sep=",", append=TRUE, col.names=FALSE)
Run Code Online (Sandbox Code Playgroud)
哪个接近我想要的.但我真的希望将上面的行添加到DF.csv的第一行(在标题的正下方),就像这样
A B C D
1 1 1 1
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
Run Code Online (Sandbox Code Playgroud)
为了清楚起见,我不打算在R中的数据框中添加一行.我希望在R环境之外的文件的开头添加一行.正如append可以用来将数据添加到外部.csv文件的末尾,我希望将数据"附加"到.csv文件的开头,这样我的最新数据总是出现在第一行(到避免滚动到长文件的末尾以查看最新数据).
编写自己的函数:
my.write.table <- function(df, filename, sep)
{
## read the existing content
temp.df <- read.table(filename, sep)
## append in front
df <- rbind(df, temp.df)
## write back the whole data frame
write.table(df, filename, sep)
}
Run Code Online (Sandbox Code Playgroud)