我需要获取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
我不得不想知道为什么它一开始就强制执行这一点-手册上说"这些包装器是故意不灵活的:它们的设计是为了确保使用正确的约定来编写有效的文件。更改append
、col.names
、sep
、dec
或qmethod
的尝试被忽略,并发出警告。",大多数工具(Excel等(都不专门处理它们。
如果你不能打败他们,就加入他们
如果你切换到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>
您可以直接将其导入SQLite。以下操作将内置数据帧BOD
导入SQLite数据库my.db
(如果my.db
还不存在,则创建它(。
library(RSQLite)
con <- dbConnect(SQLite(), dbname = "my.db")
dbWriteTable(con, "BOD", BOD, row.names = FALSE)
dbDisconnect(con)
使用write.table((,如下所示:
write.table(mydf, "/tmp/mydf.csv", row.names=F, col.names=F, sep=",")