Зациклить несколько матриц? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть куча матриц для разных фруктов. У меня есть уравнение, умножающее определенную часть матрицы вместе, а также с другой матрицей (то есть 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 голосов
/ 11 октября 2019

Если вы поместите свои фруктовые матрицы в список 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 в каждой итерации, поскольку оно ссылается накаждый раз один и тот же столбец.

Обновить после комментария ОП :

Взять средние значения столбца в таблице 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]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...