循环多个矩阵?

时间:2019-10-11 10:03:13

标签: r loops matrix

我有一堆用于不同水果的矩阵。我有一个方程将矩阵的某些部分以及另一个矩阵(即master_bwf)相乘。我需要将相同的公式应用于以完全相同的方式列出的不同水果矩阵。本质上,我只需要一遍又一遍地更改斜体中的矩阵并打印值。

有什么建议,循环会起作用吗?

apple_national_prodwf <- (sum(fbs_apple[1:35, "fbs.P_tonne"] *
                              master_bwf [1:35, 1])) -
                         (fbs_apple[36, "fbs.FE_tonne"] *
                          mean(master_bwf[1:35, 1]))

1 个答案:

答案 0 :(得分:0)

如果将水果矩阵放在列表fruit_list中,则可以执行以下操作:

mean_master_bwf <- mean(master_bwf [1:35,1])
fruit_national_prodwf <- sapply(fruit_list, function(fbs) 
     (sum(fbs[1:35, "fbs.P_tonne"] * master_bwf [1:35,1])) - 
     (fbs[36, "fbs.FE_tonne"] * mean_master_bwf))

还请注意,您不必在每次迭代中重新计算master_bws的平均值,因为它每次都引用同一列。

根据OP的评论进行更新

采用master_bwf表的列均值以获取每个水果均值的向量:

mean_master_bwf <- colMeans(master_bwf)

现在假设master_bwf中的列与水果矩阵的顺序相同,则可以执行以下操作:

fruit_national_prodwf <- sapply(1:NROW(fruit_list), 
    function(i) (sum(fruit_list[[i]][1:35, "fbs.P_tonne"] * master_bwf [1:35, i])) - 
                (fruit_list[[i]][36, "fbs.FE_tonne"] * mean_master_bwf[i]))