【问题标题】:Create empty csv file in R在 R 中创建空的 csv 文件
【发布时间】:2012-01-16 23:02:36
【问题描述】:

我有一个 R 脚本,它在多个数据集上运行一组函数并创建一组浓度响应模型。我想做的是将模型参数和其他结果保存到 csv 文件中。

我的计划是让脚本创建一个空的 csv 文件,然后随着脚本的进行,结果将附加到该 csv 文件中。每次运行脚本时,我都希望结果被覆盖。

我尝试使用

创建一个空文件
system("copy /y NUL results.csv > NUL")

创建文件,但文件没有创建。此命令(即copy/y NUL results.csv > NUL)在直接在 Windows 终端中运行时可以正常工作。

我错过了一些简单的东西吗?系统是 Windows XP。

谢谢大家!

【问题讨论】:

    标签: r csv


    【解决方案1】:

    file.create() 有什么问题吗,它可以跨操作系统移植?

    file.create("my.csv")
    # [1] TRUE
    

    然后您可以附加到文件中,例如使用append=TRUE 参数到write.table(),可能是这样的:

    df <- data.frame(a=1:4, b=4:1)
    write.table(df, file="my.csv", sep=",", row.names=FALSE, append=TRUE)
    write.table(df, file="my.csv", sep=",", row.names=FALSE, 
                col.names=FALSE, append=TRUE)
    

    编辑如果您要对每个文件进行大量写入,则打开与文件的连接一次可以节省大量时间,并且只有在完成后才关闭它。如果不是这样,上面的方法就可以了。

    【讨论】:

    • 另外,请尝试apropos("file\\.") 以查看 base R 中可用的其他一些文件操作工具。
    • 它有效,但我收到了这个:In write.table(df, file = "my.csv", sep = ",", row.names = FALSE, : appending column names to file
    【解决方案2】:

    因为它是shell命令,所以你应该使用shell而不是system。

    shell("copy /y NUL results.csv > NUL")
    

    编辑。更便携的解决方案:

    cat(NULL,file="results.csv")
    

    【讨论】:

    • 这不是跨操作系统可移植的,因此带走了R的隐藏宝藏之一。
    • 同意,沃伊切赫。但是,我最终需要在我的其他系统(Linux、Mac OS X)上运行这个(或类似的)代码。我同意您的回答更具体地针对我的问题,但乔希的回答对更广泛的受众来说更完整。
    【解决方案3】:

    怎么样

    echo > results.csv
    

    【讨论】:

    • 我使用echo &gt; results.csv 得到了类似的结果。我认为问题在于系统调用而不是实际的命令运行,因为任何到 stdout 的命令(例如,system("echo Hello!") 都不会产生输出。
    【解决方案4】:

    使用truncate

    f <- file("my.csv", open="w")
    truncate(f)
    

    【讨论】:

      猜你喜欢
      • 2015-11-23
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2016-06-25
      • 1970-01-01
      相关资源
      最近更新 更多