使用R将多行文本写入一个文件

时间:2014-01-02 16:25:49

标签: r

我正在使用write()以这种方式将多行写入同一文件:

filename='out.txt'

write(c("\n\n","No of blues =", nrow(data1)), file=filename,append=FALSE)
write(c("\n\n","No of greens =", nrow(data2)), file=filename,append=Append)
write(c("\n\n","No of reds =", nrow(data3)), file=filename,append=Append)

data1,data2和data3是变量名。

但是我收到了以下错误:

Error in cat(list(...), file, sep, fill, labels, append) : 
 argument 1 (type 'list') cannot be handled by 'cat'

这个问题在R中是否有解决方案?

2 个答案:

答案 0 :(得分:7)

猜测,您正在尝试write数据框。这是猜测,因为你给我们的线条应该有效。我不相信他们会给出错误。在这里提问的一个重要部分是自己做一些工作来找出错误的位置,并提供产生错误的自包含代码。像这样没有:

Append=TRUE
filename='out.txt'
data1=data.frame(x=1:10)
data2=data.frame(y=1:3)
data3=data.frame(z=99)
write(c("\n\n","No of blues =", nrow(data1)), file=filename,append=FALSE)
write(c("\n\n","No of greens =", nrow(data2)), file=filename,append=Append)
write(c("\n\n","No of reds =", nrow(data3)), file=filename,append=Append)

如果我运行(如果也运行那么)那么我不会收到错误。但试试这个:

write(c("\n\n","data 1 is ", data1), file=filename,append=Append)
看起来很简单:

Error in cat(list(...), file, sep, fill, labels, append) : 
  argument 1 (type 'list') cannot be handled by 'cat'

正是你的错误。也许那就是你在做什么。我们不知道,因为我们没有任何代码来创建该错误。

如果要将数据框写入文件,请使用write.table

答案 1 :(得分:0)

直接使用cat代替写

filename='out.txt'

data1 = matrix(1:10, ncol=2)
data2 = matrix(1:20, ncol=2)
data3 = matrix(1:30, ncol=2)

cat("No of blues =", nrow(data1), "\n", file=filename, append=FALSE, sep='')
cat("No of blues =", nrow(data2), "\n", file=filename, append=TRUE, sep='')
cat("No of blues =", nrow(data3), "\n", file=filename, append=TRUE, sep='')

#results
cat(readLines(filename), sep="\n")

## No of blues =5
## No of blues =10
## No of blues =15

你也可以将这三行组合成一个对cat的调用,这样就不需要附加到文件了,这总是一个冒险的主张。

cat("No of blues =", nrow(data1), "\n",
    "No of blues =", nrow(data2), "\n",
    "No of blues =", nrow(data3), "\n", file=filename, sep='')

#results
cat(readLines(filename), sep="\n")

## No of blues =5
## No of blues =10
## No of blues =15