我正在尝试将相对较大的data.table拆分为大致相等的部分,以将名称输出到csv文件中。 我已经实施了基于Split data.table into roughly equal parts
的解决方案library(data.table)
library(plyr)
dt <- data.table(Name = letters)
bins <- 5
dt[order(-rank(Name)), Split.ID := as.integer(runif(.N,0,bins))]
d_ply(dt[order(-rank(Name))], .(Split.ID),
function(sdf) write.csv(x = sdf[,1] , file = paste0("Output/test.",sdf$Split.ID[[1]],".csv"), quote = FALSE, row.names = FALSE, eol = ", "))
此解决方案的问题是csv文件中名称的顺序是按字母顺序排列的,但由于Split.ID的随机性,因此不会为所有csv文件保留它。