【问题标题】:Export CSV without col.names导出不带 col.names 的 CSV
【发布时间】:2011-10-08 16:43:12
【问题描述】:

我需要获取data.frame 并将其导出为 CSV 文件(或其他文件,但 CSV 似乎是最简单的格式良好的格式),以便我可以将其导入 SQLite 数据库。

不过,write.csv() 似乎要求我写一个标题行,而 SQLite 的 .import 命令要求我没有 有一个标题行。所以这有点不匹配。

如果我尝试省略标题行会发生以下情况:

> write.csv(mydf, "/tmp/mydf.csv", row.names=F, col.names=F)
Warning message:
In write.csv(mydf, "/tmp/mydf.csv", row.names = F, col.names = F) :
  attempt to set 'col.names' ignored

我不得不想知道为什么它首先强制执行 - 手册说 “这些包装器故意不灵活:它们旨在确保使用正确的约定来编写有效的文件。尝试更改 @ 987654325@、col.namessepdecqmethod 被忽略,并带有警告。” 但我不知道规范或其他地方需要列名 - 事实上,大多数工具(Excel等)不要特别对待它们。

【问题讨论】:

    标签: sqlite r csv


    【解决方案1】:

    如果你不能打败他们,那就加入他们。

    如果你切换到write.table()write.csv() 无论如何都会调用它)你就是金子:

    R> write.table(trees, file="/tmp/trees.csv", 
    +              row.names=FALSE, col.names=FALSE, sep=",")
    R> system("head /tmp/trees.csv")
    8.3,70,10.3
    8.6,65,10.3
    8.8,63,10.2
    10.5,72,16.4
    10.7,81,18.8
    10.8,83,19.7
    11,66,15.6
    11,75,18.2
    11.1,80,22.6
    11.2,75,19.9
    R>
    

    【讨论】:

    • 谢谢。这让我想知道write.csv() 是否真的在处理 CSV 格式的所有特性,但也许改天我会担心。
    • @KenWilliams 当我看到这种 API 设计时,我也有同样的疑惑。首先诱捕用户然后向他们发送警告并不是执行某种约定的非常友好的方式。
    【解决方案2】:

    您可以直接将其导入 SQLite。下面将内置数据框BOD 导入SQLite 数据库my.db(如果my.db 尚不存在,则创建它)。

    library(RSQLite)
    con <- dbConnect(SQLite(), dbname = "my.db")
    dbWriteTable(con, "BOD", BOD, row.names = FALSE)
    dbDisconnect(con)
    

    【讨论】:

      【解决方案3】:

      像这样使用 write.table():

      write.table(mydf, "/tmp/mydf.csv", row.names=F, col.names=F, sep=",")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        • 2020-01-01
        • 2020-07-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-07
        相关资源
        最近更新 更多