【问题标题】:How to overwrite existing .txt files after for loopfor循环后如何覆盖现有的.txt文件
【发布时间】:2017-04-24 12:58:47
【问题描述】:

我正在尝试使用 for 循环删除每个文本的初始部分,然后使用 write.table 导出修改后的文本,但在我的文件夹中,我注意到 write.table 将生成一组新文件而不是替换原始的。谁能告诉我如何覆盖现有文件?

for(i in 1:length(file.names)){
  text.v <- scan(file.names[i], what="character", encoding = "UTF-8")
  novel.v <- paste(text.v, collapse=" " )
  word.v <- gsub(".*</Header> ","", novel.v)
  write.table(paste(word.v,collapse = " "), paste(file.names[i],".txt",sep=""), row.names=FALSE, col.names=FALSE, quote=FALSE)
}

【问题讨论】:

  • 代码如何生成新文件?不是保存同名吗?
  • 我会将所有文件作为列表读取,然后执行gsub,最后写入。

标签: r for-loop export output write.table


【解决方案1】:

在我看来,您正在尝试使用“两个”扩展名编写文件,因为您像 filenameWithExtension 一样读取它们,而不是写入 filenameWithExtension.txt。如果是这样的话,解决方法就是把这个paste(file.names[i],".txt",sep="")改成这个file.names[i]

如果我错了,你应该给我们看一个 file.name 内容的例子。

【讨论】:

    【解决方案2】:

    在代码中你可以删除当前文件i

    file.remove(paste0(file.names[i],".txt"))
    

    然后你的代码

    write.table(paste(word.v,collapse = " "), paste(file.names[i],".txt",sep=""), row.names=FALSE, col.names=FALSE, quote=FALSE)
    

    检查 objetc paste(word.v,collapse = " ") 是否会正确替换您的原始文件。我过去常常做这种循环,我必须多次检查我新编写的文件的结构(引号、NA、分隔符等)

    【讨论】:

    • 谢谢,但您的代码不起作用,我的文件夹中仍有原始文件。
    猜你喜欢
    • 2015-01-03
    • 2017-05-28
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多