我正在寻找一对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"
答案 0 :(得分:2)
dput
和save(objects, file="foo.RData")
都保留了列类型。带save的Rdata对象可能是最明智的选择,可以重新加载:load("foo.RData")
答案 1 :(得分:2)
使用功能save
和load
。
save(df, file="filename.rdata")
然后再次加载:
load("filename.rdata")
答案 2 :(得分:2)
正如@TylerRinker所说,dput
和save
可能是最合适的。
...但save
和load
有时会让save
要保存的对象的名称有点不方便,然后{ {1}}将对象加载回这些名称。
替代方案是load
和saveRDS
(是的,命名有点奇怪!)。它们更低级并保存单个对象:
readRDS
另请注意在创建数据框时使用df <- data.frame(foo = 'bar', stringsAsFactors=FALSE)
saveRDS(df, file='foo.rds')
df2 <- readRDS('foo.rds')
identical(df, df2)
...