是否可以附加到现有文件的第一行?

Posted

技术标签:

【中文标题】是否可以附加到现有文件的第一行?【英文标题】:Is it possible to append to the first line of an exisiting file? 【发布时间】:2013-04-14 05:26:53 【问题描述】:

我研究了几个能够将文本添加到现有数据文件(.csv 或 .txt)的函数,例如 write.table、write.lines 或 sink。

当附加参数 =TRUE 时,新数据总是添加到文件的最后一个现有行之后。是否可以将数据添加到第一行(标题下方)的现有文件中 - 与追加相反?

给定一个数据框:

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=",")

我可以像这样在最后一行添加一个新的数据框

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)

这与我想要的很接近。但我真的很想将上面的行添加到 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

明确地说,我不希望在 R 中的数据框中添加一行。我希望在 R 环境之外的文件开头添加一行。正如 append 可用于将数据添加到外部 .csv 文件的末尾一样,我希望将数据“追加”到 .csv 文件的开头,以便我的最新数据始终出现在第一行(到避免滚动到长文件的末尾以查看最新数据)。

【问题讨论】:

在任何计算机编程语言中,您通常可以假设文本文件是固定的,无法更改。可以这样想:文本文件实际上只是一长串连续的字符。我们看到的行是一个文本编辑器以某种方式解释其中一个字符('\n')。您要问的是是否可以在该字符串中插入一些字符。如果不覆盖已经存在的字符,你将如何做到这一点?如果你想用 3 个其他字符替换 3 个字符,你可以覆盖原来的 3 个字符。 你应该搜索关于在 data.frames 中插入行的帖子 我之前遇到过“R:在 data.frame 中将向量作为一行插入”,但我的问题是尝试将一行写入/附加到 R 之外的单独 .csv 文件中。不是R中的数据框 前段时间我问过类似的问题,答案是,不是开箱即用的。 ***.com/questions/5500522/… 【参考方案1】:

编写你自己的函数:

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)

【讨论】:

以上是关于是否可以附加到现有文件的第一行?的主要内容,如果未能解决你的问题,请参考以下文章

无法将列表附加到现有文件。 C#

OpenCV将帧附加到现有视频(.avi)文件?

如何将查询参数附加到现有 URL?

auto_prepend_file 删除附加文件的第一行

c#无法将文本附加到现有文件[关闭]

附加到现有文件