随机拆分数据table并在R中制作输出文件
Randomly split a data table and make output files in R
我想将一个数据table随机拆分成n个输出;然后我想 write.table 每个列表的输出。因此,在测试中我想为测试中的每个列表编写一个文件。
library(data.table)
set.seed(100)
dt <- data.table(x=rnorm(1000))
n <- 10 # number of data sets
# randomly splits dt into n number of outputs
test <- split(dt, sample(1:n, nrow(dt), replace=T))
# writing tables for each sublist within test
# write.table(test)
# names <- paste0("output", n, ".txt", sep="")
你可以这样做:
lapply(seq_along(test), function(x)
write.table(test[[x]], file = paste0('output', x, '.txt')))
我们可以使用 fwrite
,因为它是 data.table
并且速度更快
library(data.table)
lapply(names(test), function(nm) fwrite(test[[nm]], paste0("output", nm, ".txt")))
header
'x' 是列名,如果我们需要一些自定义格式,可以使用 cat
lapply(names(test), function(nm)
cat(test[[nm]][[1]], file = paste0("output", nm, ".txt"), sep = "\n"))
或如评论中提到的@chinsoon12,指定col.names = FALSE
(在fwrite
中默认为TRUE)
lapply(names(test), function(nm) fwrite(test[[nm]],
paste0("output", nm, ".txt"), col.names = FALSE))
我想将一个数据table随机拆分成n个输出;然后我想 write.table 每个列表的输出。因此,在测试中我想为测试中的每个列表编写一个文件。
library(data.table)
set.seed(100)
dt <- data.table(x=rnorm(1000))
n <- 10 # number of data sets
# randomly splits dt into n number of outputs
test <- split(dt, sample(1:n, nrow(dt), replace=T))
# writing tables for each sublist within test
# write.table(test)
# names <- paste0("output", n, ".txt", sep="")
你可以这样做:
lapply(seq_along(test), function(x)
write.table(test[[x]], file = paste0('output', x, '.txt')))
我们可以使用 fwrite
,因为它是 data.table
并且速度更快
library(data.table)
lapply(names(test), function(nm) fwrite(test[[nm]], paste0("output", nm, ".txt")))
header
'x' 是列名,如果我们需要一些自定义格式,可以使用 cat
lapply(names(test), function(nm)
cat(test[[nm]][[1]], file = paste0("output", nm, ".txt"), sep = "\n"))
或如评论中提到的@chinsoon12,指定col.names = FALSE
(在fwrite
中默认为TRUE)
lapply(names(test), function(nm) fwrite(test[[nm]],
paste0("output", nm, ".txt"), col.names = FALSE))