R不会将行附加到文件(使用Cat或Write)

时间:2016-10-09 10:02:37

标签: r

我尝试了stackoverflow中的一些选项(例如1)但是这也没有用,所以我的代码可能有错:

 fileConn<-file("outputR.txt")
for (i in 1:length(lines)){
  line = lines[i]
  fields = strsplit(line, "\t")[[1]]
  id = fields[1]
  goIDs = fields[2:length(fields)]
  list = as.list(GOCCANCESTOR[goIDs])
  text = paste(toString(id), ":", toString(goIDs))
  cat(text, file=fileConn, append=TRUE, sep = "\n")

}
close(fileConn)

当我运行此代码时,它会一直覆盖outputR.txt文件中的数据。 有什么建议可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

问题是你正在使用Fileconnection与cat结合使用,然后附加功能无法正常工作。你可以使用几个选项,最容易的就是这个:
首先&#34;创造&#34;该文件,如果您想添加标题,例如:

header = "some header" 
## if you don't want to use a header then leave the header blank
header =""
cat(text, file="outputR.txt", append=FALSE, sep = "\n")

如果要清除文件(如果已存在),请注意append = FALSE这是必要的,否则您必须使用append = TRUE
您可以使用以下方式将文字写入其中:

text = text = paste(toString(id), ":", toString(goIDs))
cat(text file="outputR.txt", append=TRUE, sep = "\n")

答案 1 :(得分:0)

作为猫状态的帮助页面:

  

追加:逻辑。仅在参数文件是文件名(而不是连接或“| cmd”)时使用。如果TRUE输出将附加到文件;否则,它将覆盖文件的内容。

因此,如果在file参数中使用连接,则忽略append参数的值。

只需将文件参数指定为文件名:

cat(text, file="outputR.txt", append=TRUE, sep = "\n")

或者您可以使用指定的正确模式打开文件连接

  

w+ - 开放阅读和写作,最初截断文件。

fileConn <- file("outputR.txt", open = "w+")
for (i in 1:length(lines)){
  text <- paste("my text in line", i)
  cat(text, file = fileConn, sep = "\n")
}
close(fileConn)

答案 2 :(得分:0)

这里有两个选项:

<强> 1 以写入模式打开文件:

lines <- c("aaaaa", "bbbb")


fileConn<-file("test.txt", "w")
for (i in 1:length(lines)){
  line = lines[i]
  cat(line, file=fileConn, append=TRUE, sep = "\n")
}
close(fileConn)

<强> 2 将write函数与append参数一起使用:

lines <- c("aaaaa", "bbbb")

for (i in 1:length(lines)){
  line = lines[i]
  write(line,file="test2",append=TRUE)  
}