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)
我想使这个功能更有效,以便它在大型数据集上运行得更快.
您可以使用做到这一点很容易split从baseR.例如split(iris, 1:3),将分割iris集成一行的三个数据帧的列表.您可以修改参数以指定块大小.
由于输出仍然是数据帧列表,因此您可以轻松地使用lapply输出来处理数据,并根据需要将它们组合在一起.
由于速度是使用这种方法的主要问题,我建议你看看这个data.table包,它适用于大型数据集.如果您指定了有关您在功能中尝试实现的内容的更多信息,那么SO的人员可能会提供帮助.