r - 将列表拆分为长度为 x 的列表
问题描述
简单的问题,给定一个列表:
main_list <- list(1:3,
4:6,
7:9,
10:12,
13:15)
main_list
# [[1]]
# [1] 1 2 3
# [[2]]
# [1] 4 5 6
# [[3]]
# [1] 7 8 9
# [[4]]
# [1] 10 11 12
# [[5]]
# [1] 13 14 15
我想将列表拆分为多个列表,将原始列表拆分为每个长度的列表x
。所以如果我说x = 2
,我会得到 3 个长度为 2、2 和剩余 1 的列表:
target <- list(list(1:3,
4:6),
list(7:9,
10:12),
list(13:15))
target
# [[1]]
# [[1]][[1]]
# [1] 1 2 3
# [[1]][[2]]
# [1] 4 5 6
# [[2]]
# [[2]][[1]]
# [1] 7 8 9
# [[2]][[2]]
# [1] 10 11 12
# [[3]]
# [[3]][[1]]
# [1] 13 14 15
就像是:
my_split <- function(listtest, x) {
split(listtest, c(1:x))
}
target <- my_split(main_list, 2)
谢谢
解决方案
这是一个选项gl
split(main_list, as.integer(gl(length(main_list), 2, length(main_list))))
它可以转换为自定义函数
f1 <- function(lstA, n) {
l1 < length(lstA)
split(lstA, as.integer(gl(l1, n, l1)))
}
推荐阅读
- python - 无法读取熊猫中前导零的excel
- mongodb - MongoDB:如何获取最旧的文档?
- c# - 正则表达式提取 3 - 8 位数字和 3 个字母文本(casplock 文本)之间的数据
- azure - Azure AD B2C 下载 OpenID 配置失败
- node.js - npm 错误!在 npm install 上准备 GitDep
- github - 使用 Github Actions 发出 API 获取请求并将数据保存到 repo
- arrays - C程序未正确按升序对数组进行排序
- angular - 如何在 Angular 中使用 daterangepicker 包?
- python - 在 Python 中将函数的缓存值存储为函数的属性
- angular - 有没有办法找出角度项目中未使用的变量和函数