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

R语言如何对多个列表应用函数并输出列表格式结果

实现两个列表对应位置矩阵相乘的apply族方案

最优方案:使用mapply

mapply本身支持多列表按索引同步迭代,是最适配该需求的apply族函数:

# 模拟测试数据:N取3,生成各含100个3×3方阵的列表A、B
N <- 3
A <- lapply(1:100, function(x) matrix(rnorm(N*N), nrow = N))
B <- lapply(1:100, function(x) matrix(rnorm(N*N), nrow = N))

# 逐元素相乘,输出长度为100的列表
result <- mapply(`*`, A, B, SIMPLIFY = FALSE)

# 若需要矩阵代数内积,替换运算符即可
# result <- mapply(`%*%`, A, B, SIMPLIFY = FALSE)

参数说明:

  • 第一个参数传入要执行的运算函数,直接传入运算符*(逐元素乘)或%*%(矩阵内积)即可
  • 后续依次传入待迭代的两个列表A、B,函数会自动按相同索引位置取元素参与运算
  • 必须加SIMPLIFY = FALSE参数,否则mapply会自动将结果合并为数组,无法返回列表格式

备选方案:使用lapply

如果习惯用单列表迭代的lapply,也可以通过索引遍历实现:

result <- lapply(seq_along(A), function(i) A[[i]] * B[[i]])
# 内积版本:result <- lapply(seq_along(A), function(i) A[[i]] %*% B[[i]])

结果验证

可以通过以下代码验证运算正确性:

# 对比第一个元素的运算结果,返回TRUE即说明运算正确
identical(result[[1]], A[[1]] * B[[1]])

内容的提问来源于stack exchange,提问作者Amin Kaveh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:21:03