将数据集划分为块

Zac*_*ach 3 performance r dataframe

我在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)
Run Code Online (Sandbox Code Playgroud)

我想使这个功能更有效,以便它在大型数据集上运行得更快.

Ram*_*ath 7

您可以使用做到这一点很容易splitbaseR.例如split(iris, 1:3),将分割iris集成一行的三个数据帧的列表.您可以修改参数以指定块大小.

由于输出仍然是数据帧列表,因此您可以轻松地使用lapply输出来处理数据,并根据需要将它们组合在一起.

由于速度是使用这种方法的主要问题,我建议你看看这个data.table包,它适用于大型数据集.如果您指定了有关您在功能中尝试实现的内容的更多信息,那么SO的人员可能会提供帮助.