Создать матрицу после сбора данных из каждой итерации алгоритма - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть 2 матрицы, и на основе обеих я создаю вторую пустую матрицу с именем myDose.Затем я использую вложенные циклы for для вычисления Koff_m1 и Koff_m2.Затем я умножаю эти 2, чтобы вычислить myDose, который должен быть матрицей или фреймом данных со всеми собранными значениями (после каждой итерации).Проблема в том, что вместо умножения Koff_m1 и Koff_m2 в моем реальном сценарии я использую их в качестве входных данных в более сложной функции, которая в сочетании с каждой итерацией for производит очень медленный вывод.Вот почему я бы предпочел решение, в котором будет создана матрица со значениями Koff_m1 и Koff_m2.Тогда я мог бы использовать его для создания матрицы myDose без вложенных циклов for.

Kd1Par<-as.matrix(c(1,2,3))
Kd2Par<-as.matrix(c(1,2,3))

myDose <- matrix(c(0), nrow= length(Kd1Par), ncol = length(Kd2Par))

for (i in 1:length(Kd1Par)){
  for (j in 1:length(Kd2Par)){
    #print(c(Kd1 = Kd1Par[i], Kd2 = Kd2Par[j]))
    Kd1 <- Kd1Par[i]
    Kd2 <- Kd2Par[j]

    Koff_m1 <- 10*Kd1 # (1/day)
    Koff_m2 = 10*Kd2 # (1/day)

    myDose[i,j]<-Koff_m1*Koff_m2
   #print(c(Dose = myDose[i,j]))
  }
}

1 Ответ

0 голосов
/ 27 февраля 2019

Это похоже на случай outer

myDose <- outer(as.numeric(Kd1Par), as.numeric(Kd2Par), function(x, y) 100 * x * y)
myDose
#     [,1] [,2] [,3]
#[1,]  100  200  300
#[2,]  200  400  600
#[3,]  300  600  900
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...