Экспорт кадра данных в R и сохранение типов - PullRequest
2 голосов
/ 24 февраля 2012

Я ищу пару команд R, которые выгружают кадр данных на диск и могут воссоздать тот же самый кадр данных из дампа.

Полагаю, write.table является де-факто для экспорта / импорта, но в следующем примере происходит сбой, поскольку не сохраняется тип столбцов:

df = data.frame('foo' = 'bar')
df$foo = as.character(df$foo)

typeof(df$foo)
# = "character"

write.table(df,'~/df.rdata')
df2 = read.table('~/df.rdata')

typeof(df2$foo)
# = "integer"

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Используйте функции save и load.

save(df, file="filename.rdata")

А затем снова загрузите его:

load("filename.rdata")
2 голосов
/ 24 февраля 2012

Как сказал @TylerRinker, dput и save, вероятно, наиболее подходящие.

... но save и load иногда немного неудобны в том смысле, что вы даете save имена сохраняемых объектов, а затем load загружает объекты обратно в эти имена.

Альтернативой являются saveRDS и readRDS (да, именованиенемного странно!)Они немного более низкого уровня и сохраняют один объект:

df <- data.frame(foo = 'bar', stringsAsFactors=FALSE)
saveRDS(df, file='foo.rds')
df2 <- readRDS('foo.rds')
identical(df, df2)

Также обратите внимание на использование stringsAsFactors=FALSE при создании фрейма данных ...

2 голосов
/ 24 февраля 2012

dput и save(objects, file="foo.RData") оба сохраняют типы столбцов.Rdata объект с сохранением, вероятно, самый разумный выбор и может быть перезагружен с помощью: load("foo.RData")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...