【问题标题】:What's the best way to write a disk frame to CSV?将磁盘帧写入 CSV 的最佳方法是什么?
【发布时间】:2020-12-29 14:39:13
【问题描述】:

我正在查看 docs and 我没有看到写入 CSV 的函数。

似乎有一个写入磁盘帧的函数,但不清楚它是以什么格式存储的

write_disk.frame

将 data.frame/disk.frame 写入 disk.frame 位置。如果 df 是 data.frame,那么在大多数情况下建议使用 as.disk.frame 函数

我可以将fwritewrite_csv 与磁盘框架一起使用吗?

【问题讨论】:

  • 何不试一试,一探究竟?

标签: r data.table fwrite fread disk.frame


【解决方案1】:

我明白了。我可能会添加写入 csv 功能,因为我经常看到这个请求。

不过,最好的跟踪方法是在 github https://github.com/xiaodaigh/disk.frame/issues 上提交问题,这次我已经做到了,请参阅 https://github.com/xiaodaigh/disk.frame/issues/311

如果您想将每个块写入单独的 CSV,只需这样做

df %>%
  cimap(function(id, chunk) {
    data.table::fwrite(chunk, file.path("some/path/", paste0(id, ".csv"))
    NULL # return null since you don't need to return anything
  }, lazy=FALSE)

例如

library(disk.frame)

a = as.disk.frame(nycflights13::flights)

cimap(a, function(chunk, id) {
  data.table::fwrite(chunk, file.path(tempdir(), paste0(id, ".csv")))
  NULL
}, lazy=FALSE)


dir(tempdir())

如果您想写入一个文件,只需修改为通过append=TRUE 写入一个文件,但请确保关闭多个工作器!

setup_disk.frame(workers = 1) # only one worker
cmap(a, function(chunk) {
  data.table::fwrite(chunk, file.path(tempdir(), "one_file.csv"), append = TRUE)
  NULL
}, lazy=FALSE)
setup_disk.frame() # turn multi worker back on 


dir(tempdir())

【讨论】:

    猜你喜欢
    • 2011-06-15
    • 2010-11-08
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多