我有一堆用于不同水果的矩阵。我有一个方程将矩阵的某些部分以及另一个矩阵(即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]))
答案 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]))