【发布时间】:2016-10-14 05:41:01
【问题描述】:
我的问题基本上是这样的:
我有一个列表 L,其中每个元素都是相同维度的矩阵。我需要将此列表中的每个矩阵乘以外部向量 h 中的对应元素,然后对所有矩阵求和。
set.seed(101)
L <- replicate(3, matrix(rnorm(4), 2), simplify = FALSE)
h <- 2:4
# I need this
L[[1]] * h[1] + L[[2]] * h[2] + L[[3]] * h[3]
鉴于我需要尝试不同数量的矩阵,而且我有很多矩阵,我必须以一种聪明的方式来做。我的想法是
L1 <- lapply(L, function(x) x * h[x])
L2 <- Reduce('+', L1)
其中 "h[x]" 将通过列表 L 中的矩阵 x 的索引来索引向量 h,所以我会得到
L1 = list(L[[1]] * h[1], L[[2]] * h[2], L[[3]] * h[3])
那么,问题是,如何通过使用元素本身来获取列表中元素的索引?类似 h[L[[m1]]] 的东西可以得到 h[1]。
或者,如果您有任何其他方法可以解决我的问题,我该怎么做?
【问题讨论】:
-
您能否通过给出示例矩阵 m1、m2、m3 来完成示例?
-
下面 Ben Bolker 给出的例子有效