вы можете разбить таблицу данных на куски размером chuncksize
, используя data.table::split
Затем вы можете передать полученный список l
любой функции, используя lapply( l, ...)
что он на самом деле делает:
setDT(AA)
преобразует AA в data.table
[, rowID := (.I-1) %/% chunksize]
создает новый столбец, основанный на целочисленном делении по числу, используется .I
, потому что data.table
не имеет имен строк.
Затем результат разделяется на вновь созданный столбец rowID
.
#sample data
set.seed(123)
AA <- data.frame( data = rnorm(10))
# data
# 1 -0.56047565
# 2 -0.23017749
# 3 1.55870831
# 4 0.07050839
# 5 0.12928774
# 6 1.71506499
# 7 0.46091621
# 8 -1.26506123
# 9 -0.68685285
# 10 -0.44566197
chunksize = 3
l <- split( setDT(AA)[, rowID := (.I-1) %/% chunksize][], by = "rowID")
# $`0`
# data rowID
# 1: -0.5604756 0
# 2: -0.2301775 0
# 3: 1.5587083 0
#
# $`1`
# data rowID
# 1: 0.07050839 1
# 2: 0.12928774 1
# 3: 1.71506499 1
#
# $`2`
# data rowID
# 1: 0.4609162 2
# 2: -1.2650612 2
# 3: -0.6868529 2
#
# $`3`
# data rowID
# 1: -0.445662 3