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

时间:2019-02-27 02:32:24

标签: r

我有2个矩阵,并基于这两个矩阵创建了另一个名为myDose的空矩阵。然后,我使用嵌套的for循环来计算Koff_m1Koff_m2。然后,我将其乘以2以计算myDose,该Koff_m1必须是一个矩阵或数据框,其中包含所有值(在每次迭代之后)。问题是,我没有在实际情况下将Koff_m2for乘以,而是将它们用作更复杂函数的输入,该函数与每个Koff_m1迭代结合使用时会产生非常慢的输出。这就是为什么我更喜欢一种解决方案,其中要创建具有Koff_m2myDose值的矩阵。然后,我可以用它来创建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])) } } 循环。

<!-- Alert Bar -->
    <div class="marqueeWrapper" style="background-color: #D35400; height: 25px; margin-right: auto; margin-left: auto; z-index: 300; width: 100%;">
    <p style="color: #FFF;">
    <marquee>Here is your marquee example edit this text</marquee>
    </p>
    </div>
<!-- Alert Bar ends -->

1 个答案:

答案 0 :(得分:2)

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