导出不带col.names的CSV

时间:2011-07-19 16:21:22

标签: sqlite r csv

我需要使用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

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

3 个答案:

答案 0 :(得分:106)

如果你无法击败他们,请加入他们。

如果您切换到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>

答案 1 :(得分:10)

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

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

答案 2 :(得分:5)

使用write.table()代替:

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