【问题标题】:Append lines to a file将行附加到文件
【发布时间】:2011-12-06 04:40:40
【问题描述】:

我是使用 R 的新手。我正在尝试使用 R 中的现有数据向文件中添加(追加)新行。问题是我的数据大约有 30000 行和 13000 列。我已经尝试使用writeLines 函数添加一行,但生成的文件只包含添加的行。

【问题讨论】:

  • @MichaelOhlrogge 你确定这是骗子吗?您链接到的 Q Write lines of text to a file in R 通常是关于将行写入文件,而此 Q 专门询问 appending 行到现有文件。
  • @UweBlock 是的,但链接的 Q 在其许多答案中都讨论了附加选项。
  • @MichaelOhlrogge 这只是链接 Q 中 8 个答案中的 2 个。两者都建议 cat()。两者都比较简洁。他们都没有解释为什么他们使用append 选项或此选项的效果。没有其他答案(writeLines()sink())提及或讨论append 选项。
  • @UweBlock 好的,当然,我会收回

标签: r file large-data


【解决方案1】:

您是否尝试过使用write 函数?

line="blah text blah blah etc etc"
write(line,file="myfile.txt",append=TRUE)

【讨论】:

  • 确保不要使用连接作为文件,而只是放入文件路径,否则附加将不起作用!
  • @Ansjovis86 你能详细说明一下“作为文件的连接”吗?
  • @munmunbb 仅当您使用连接设置时。如果您没有,请不要担心。如果你有它,从你的代码中删除它,这个答案就可以了。
  • 虽然这对很多人来说可能很明显,但我之前一直阅读现有文件,使用 rbind 向其中添加一行,然后再次写入更新的文件。我现在看到这是非常低效的,并且使用 write 追加一行要快得多。
  • write 并不是真的要将简单的字符串写入文件。 Use cat for that。正如the documentation for the write command 所说,“数据(通常是矩阵)x 被写入文件file。”
【解决方案2】:

write.tablewrite.csv 和其他都有append= 参数,它附加append=TRUE,如果append=FALSE 通常覆盖。所以你想/必须使用哪一个,取决于你的数据。

顺便说一句,cat() 也可用于将文本写入文件,并且还具有 append= 参数。

【讨论】:

  • 甚至sink(append = TRUE)
  • 对于纯文本数据,使用cat() 而不是write()。正如the documentation for the write command 所说,“数据(通常是矩阵)x 被写入文件file。” write() 不适用于简单的字符串数据。它旨在格式化更复杂的类型,并围绕cat() 进行实际写入文件。使用cat() 时,您需要paste0(line,"\n") 在文件末尾添加换行符。
【解决方案3】:
lapply(listOfVector, function(anyNameofVect){ write(anyNameofVect, file="outputFileName", sep="\t", append=TRUE, ncolumns=100000) })

lapply(listOfVector, write, file="outputFileName", sep="\t", append=TRUE, ncolumns=100000)

【讨论】:

  • 考虑到将追加“写入”命令时过于复杂。
猜你喜欢
  • 2016-07-20
  • 1970-01-01
  • 2011-11-10
  • 2017-09-28
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
相关资源
最近更新 更多