是否有与purrr相关的方法将列表拆分为多个长度较小的列表?

是否有与purrr相关的方法将列表拆分为多个长度较小的列表?,r,list,tidyverse,R,List,Tidyverse,让我解释一下我想用代码做什么 taget_input <- list(1,2,3,4,5,6,7,8,9) desired_output <- list(list(1,2,3), list(4,5,6), list(7,8,9)) # I wish there is a elegant function that passes this test testthat::expect_equal(DESIRED_FUNCTION(taget_input, group_length=3)

让我解释一下我想用代码做什么

taget_input <- list(1,2,3,4,5,6,7,8,9)
desired_output <- list(list(1,2,3), list(4,5,6), list(7,8,9))

# I wish there is a elegant function that passes this test
testthat::expect_equal(DESIRED_FUNCTION(taget_input, group_length=3), desired_output)

taget\u输入基本上就是
unname(split(taget\u输入,rep(1:3,3))
不是吗?天哪@最近的邮件你是对的。我现在觉得自己很愚蠢;0
#' @param target_list list to split on
#' @param group_length length for each split 
group_list <- function(target_list, group_length) {
  len_of_list <- length(target_list)
  res <- list()
  i <- 1
  while(TRUE) {
    start <- (1 + group_length*(i-1))
    if(start > len_of_list) {
      break
    }
    end <- min((group_length + group_length*(i-1)), len_of_list)
    res[[i]] <- target_list[start:end]
    i <- i + 1
  }
  res
}