我在 R 中有一个函数,如果我将它应用到超过 1000 行的数据集,它就会阻塞。因此,我想将我的数据集拆分为一个包含 n 个块的列表,每个块不超过 1000 行。
这是我目前用来进行分块的函数:
chunkData <- function(Data,chunkSize){
Chunks <- floor(0:(nrow(Data)-1)/(chunkSize))
lapply(unique(Chunks),function(x) Data[Chunks==x,])
}
chunkData(iris,100)
我想让这个函数更高效,以便它在大型数据集上运行得更快。
最佳答案
您可以使用 split
轻松完成此操作来自 base
R。例如,split(iris, 1:3)
, 将拆分 iris
数据集按行转换为三个数据框的列表。您可以修改参数以指定块大小。
由于输出仍然是数据框列表,您可以轻松使用 lapply
在输出上处理数据,并根据需要组合它们。
由于速度是使用这种方法的主要问题,我建议您查看 data.table
包,它适用于大型数据集。如果您指定有关您要在功能中实现的目标的更多信息,SO 的人员可能会提供帮助。
关于performance - 将数据集分成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762719/