从每次算法迭代中收集数据后创建矩阵

  • 本文关键字:数据 创建 算法 迭代 r
  • 更新时间 :
  • 英文 :


我有 2 个矩阵,基于这两个矩阵,我创建了一个名为myDose的第二个空矩阵。然后我使用嵌套for循环来计算Koff_m1Koff_m2。然后我将这 2 相乘以计算myDose哪个需要是矩阵或数据帧,并收集所有值(在每次迭代后)。问题在于,在我的真实场景中,我没有将Koff_m1乘以Koff_m2,而是将它们用作更复杂的函数的输入,该函数与每次for迭代相结合会产生非常慢的输出。这就是为什么我更喜欢一个解决方案,其中创建具有Koff_m1Koff_m2值的矩阵。然后我可以使用它来创建没有嵌套for循环的myDose矩阵。

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]))
}
}

这似乎是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

最新更新