Экспорт CSV без имен столбцов - PullRequest
54 голосов
/ 19 июля 2011

Мне нужно взять 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 и т. д.) не обращаются с ними специально.

Ответы [ 3 ]

107 голосов
/ 19 июля 2011

Если вы не можете победить их, присоединяйтесь к ним.

Если вы переключитесь на 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>
10 голосов
/ 19 июля 2011

Вы можете напрямую импортировать его в SQLite.Следующее импортирует встроенный фрейм данных BOD в базу данных SQLite my.db (создает my.db, если он еще не существует).

library(RSQLite)
con <- dbConnect(SQLite(), dbname = "my.db")
dbWriteTable(con, "BOD", BOD, row.names = FALSE)
dbDisconnect(con)
5 голосов
/ 19 июля 2011

Вместо этого используйте write.table (), например:

write.table(mydf, "/tmp/mydf.csv", row.names=F, col.names=F, sep=",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...