commands - sqlite show databases
Exportar CSV sin col.names (3)
Necesito tomar un data.frame
y exportarlo a un archivo CSV (u otra cosa, pero CSV me pareció el formato más fácil y mejor formado) para poder importarlo en una base de datos SQLite.
Sin embargo, parece que write.csv()
requiere que escriba una línea de encabezado, y el comando .import
de SQLite requiere que no tenga una línea de encabezado. Entonces esa es una falta de coincidencia.
Esto es lo que sucede si trato de omitir la línea del encabezado:
> 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
Tengo que preguntarme por qué se aplica eso en primer lugar, el manual dice: "Estas envolturas son deliberadamente inflexibles: están diseñadas para asegurar que se utilicen las convenciones correctas para escribir un archivo válido. Intenta cambiar append
, col.names
, sep
, dec
o qmethod
son ignorados, con una advertencia ". Pero no conozco nada en la especificación o en otra parte que requiera nombres de columna; de hecho, la mayoría de las herramientas (Excel, etc.) no las tratan especialmente.
Puede importarlo directamente a SQLite. A continuación, se importa el marco de datos integrado BOD
en la base de datos SQLite my.db
(creando my.db
si aún no existe).
library(RSQLite)
con <- dbConnect(SQLite(), dbname = "my.db")
dbWriteTable(con, "BOD", BOD, row.names = FALSE)
dbDisconnect(con)
Use write.table () en su lugar como sigue:
write.table(mydf, "/tmp/mydf.csv", row.names=F, col.names=F, sep=",")
Si no puedes vencerlos, únete a ellos.
Si cambia a write.table()
(lo que write.csv()
llama de todos modos) está dorado:
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>