write.table中的错误

时间:2018-08-02 11:47:04

标签: r write.table

 for(i in 1:4){
     write.table(x, file=cat("C:\\Users\\Desktop\\example_",i,sep=""),row.names=FALSE)}
  

if(file ==“”)file <-stdout()else if(is.character(file)){:     参数的长度为零

如何解决此错误? write.tablewrite.csvwrite.csv2有什么区别?

1 个答案:

答案 0 :(得分:0)

使用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())。