for(i in 1:4){
write.table(x, file=cat("C:\\Users\\Desktop\\example_",i,sep=""),row.names=FALSE)}如果(文件== "")文件<- stdout()否则(is.character(文件)){:参数长度为零时出错
我如何解决这个错误??write.table,write.csv和write.csv2有什么区别?
发布于 2018-08-02 12:08:37
正如注释中提到的那样,使用paste()或paste0()代替cat()应该可以解决您所面临的问题。
write.table()创建一个数据文件
write.csv()使用“。”用于小数点和分隔符的逗号。
write.csv2()用逗号表示小数点,用分号表示分隔符,这是一些西欧地区CSV文件的Excel惯例。
请阅读?write.table,了解更多的细节,而不是我上面给出的答案。
我想我可能会添加更多来解释为什么cat()不能工作。
如果您查看cat()的例程,您会发现这是为了将输出发送到stdout或某些文件连接。
function (..., file = "", sep = " ", fill = FALSE, labels = NULL,
append = FALSE)
{
if (is.character(file))
if (file == "")
file <- stdout()
else if (substring(file, 1L, 1L) == "|") {
file <- pipe(substring(file, 2L), "w")
on.exit(close(file))
}
else {
file <- file(file, ifelse(append, "a", "w"))
on.exit(close(file))
}
.Internal(cat(list(...), file, sep, fill, labels, append))
}因此,在运行cat时,它将其输出发送到stdout (在您的情况下),而不是返回到调用它的函数(write.table())。
https://stackoverflow.com/questions/51652851
复制相似问题