You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套列表转换为维度为c(n, m*p, 2)的数组?

如何将嵌套列表转换为指定维度的数组?

首先看你生成嵌套列表的代码:

n = 10
m = 10
p = 5

l = list()
for(i in 1:m) {
  l[[i]] = list(
    X = matrix(rnorm(n * p), nrow = n),
    Y = matrix(rnorm(n * p), nrow = n)
  )
}

要将其转换为维度c(n, m * p, 2)的数组,可按以下方式实现:

# 设置随机种子确保结果可复现(可选)
set.seed(123)

# 提取所有X矩阵并按列拼接
X_combined = do.call(cbind, lapply(l, function(item) item$X))
# 提取所有Y矩阵并按列拼接
Y_combined = do.call(cbind, lapply(l, function(item) item$Y))

# 组合为目标数组
target_array = array(c(X_combined, Y_combined), dim = c(n, m*p, 2))

# 验证维度是否符合要求
dim(target_array)
# 输出结果:10 50 2

代码说明:

  • lapply(l, function(item) item$X):遍历嵌套列表l,逐个提取每个子列表中的X矩阵,得到一个包含m个矩阵的列表
  • do.call(cbind, ...):将这m个矩阵按列方向拼接,形成n行、mp列的大矩阵(每个原矩阵有p列,m个就是mp列)
  • array(c(X_combined, Y_combined), dim = c(n, m*p, 2)):把拼接好的X和Y矩阵按顺序转为向量,再重构为指定维度的数组,第三维度的第1个位置对应X数据,第2个位置对应Y数据

内容的提问来源于stack exchange,提问作者Mr Frog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:43:12