问题描述
我正在浏览docs and,但没有看到用于写入CSV的功能。
看来有写磁盘框架的功能,但不清楚它以什么格式存储
write_disk.frame
将data.frame / disk.frame写入disk.frame位置。如果df是data.frame,则在大多数情况下建议使用as.disk.frame函数
我可以将fwrite
或write_csv
用于磁盘框架吗?
解决方法
我明白了。我可能经常看到此请求,因此可能会将写入功能添加到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(),".csv")))
NULL
},lazy=FALSE)
dir(tempdir())
如果要写入一个文件,只需修改以通过append=TRUE
写入一个文件,但是请确保关闭多个工作器!
setup_disk.frame(workers = 1) # only one worker
cmap(a,function(chunk) {
data.table::fwrite(chunk,"one_file.csv"),append = TRUE)
NULL
},lazy=FALSE)
setup_disk.frame() # turn multi worker back on
dir(tempdir())