【问题标题】:How to apply a function to a list of matrices elementwise如何按元素将函数应用于矩阵列表
【发布时间】:2015-01-26 16:01:51
【问题描述】:

我有一个矩阵列表,我想将每个矩阵与与列表长度相同的向量乘以不同的因子。 我尝试了以下方法:

lapply(list(mat1, mat2, mat3),"*",c(1,2,3))

但是,这会返回:

list(mat1*c(1,2,3), mat2*c(1,2,3), mat3*c(1,2,3))

而不是我需要的:

list(mat1*1,mat2*2,mat3*3)

有没有人解决这个问题?

【问题讨论】:

  • 请将您的数据对象添加到您的问题中(dput(mat1)dput(mat2)、...)。
  • 可能与 mapply?像mapply(function(x, y) x * y, lst, vec) 这样的东西? (未测试...)

标签: r list matrix lapply


【解决方案1】:

正如 docendo discimus 建议的那样,您可以使用 mapply

 l <- list(matrix(1:4, ncol = 2), matrix(5:8, ncol = 2), matrix(9:12, ncol = 2))
 v <- 1:3
 mapply(function(x,y) x*y, x = l, y = v, SIMPLIFY = FALSE)

或者直接使用Map

Map("*", l, v)

【讨论】:

  • 第二种解决方案更快
  • 您可以选择! ;-)
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 2013-02-21
  • 2016-02-20
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
相关资源
最近更新 更多