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