首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >write.table中的误差

write.table中的误差
EN

Stack Overflow用户
提问于 2018-08-02 11:47:04
回答 1查看 1.6K关注 0票数 0
代码语言:javascript
复制
 for(i in 1:4){
     write.table(x, file=cat("C:\\Users\\Desktop\\example_",i,sep=""),row.names=FALSE)}

如果(文件== "")文件<- stdout()否则(is.character(文件)){:参数长度为零时出错

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

EN

回答 1

Stack Overflow用户

发布于 2018-08-02 12:08:37

正如注释中提到的那样,使用paste()paste0()代替cat()应该可以解决您所面临的问题。

write.table()创建一个数据文件

write.csv()使用“。”用于小数点和分隔符的逗号。

write.csv2()用逗号表示小数点,用分号表示分隔符,这是一些西欧地区CSV文件的Excel惯例。

请阅读?write.table,了解更多的细节,而不是我上面给出的答案。

我想我可能会添加更多来解释为什么cat()不能工作。

如果您查看cat()的例程,您会发现这是为了将输出发送到stdout或某些文件连接。

代码语言:javascript
复制
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())。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51652851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档