嗨,我想做一些我认为应该很简单但似乎找不到办法的事情。我有一些文件想要更改标题行中由关键字给出的某些文件。我要更改的行始终在前20行中,但不一定完全相同。
所以我想读前20行(这很容易),找到并更改我的字符串(再次很容易),然后覆盖文件的前20行,并保持下面的数千行不变。我将不得不做数百次,因此为什么我不想读整个文件并全部写出来。
我创建了一个非常简单的示例。警告如果运行此文件,我将在当前工作目录中创建一个名为Temp.txt的文件。
#Create Dummy text file
write.table(file = "Temp.txt", data.frame(Test = letters[1:26]), row.names = F, quote = F)
然后我可以读入这些行并进行更改
# read top 5 lines of text file (In real life I need to look at 20, but for examples sake 2)
TestHeader = readLines("Temp.txt", n = 5)
# Find and replace my search string
TestHeader[grepl("c",TestHeader)] <- "My New Line"
# <what to do here?> I want to only write over first 20 lines
很明显,我可以阅读全文并进行更改
TestHeader = readLines("Temp.txt")
TestHeader[grepl("c",TestHeader)] <- "My New Line"
writeLines(TestHeader, "Temp.txt")
但是,这将涉及不必要的读写成千上万的行。