导出不带col.names的CSV

Ken*_*ams 56 csv sqlite r

我需要将其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
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它的执行,在第一个地方-手册上说"这些包装是故意不灵活.它们的设计,以确保正确的约定是用来写一个有效文件,试图改变append,col.names,sep,dec或者qmethod被忽略,警告." 但我知道规范或其他需要列名的任何内容 - 事实上,大多数工具(Excel等)都没有特别对待它们.

Dir*_*tel 109

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

如果你切换到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>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.这种让我想知道`write.csv()`是否真的处理了CSV格式的所有特性,但也许我会担心另一天. (4认同)
  • @KenWilliams 当我看到这种 API 设计时,我也有同样的想法。首先捕获用户然后向他们发送警告并不是强制执行特定约定的一种非常友好的方式。 (3认同)

G. *_*eck 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)
Run Code Online (Sandbox Code Playgroud)


jed*_*cis 5

使用write.table()代码如下:

write.table(mydf, "/tmp/mydf.csv", row.names=F, col.names=F, sep=",")
Run Code Online (Sandbox Code Playgroud)