我正在使用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中是否有解决方案?
答案 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