代码之家  ›  专栏  ›  技术社区  ›  firmo23

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

r
  •  0
  • firmo23  · 技术社区  · 6 年前

    我有两个矩阵,基于这两个,我创建了第二个名为 myDose . 然后我使用嵌套 for 循环以便计算 Koff_m1 Koff_m2 . 然后我把这2相乘来计算 肌注 它需要是一个矩阵或数据帧,其中包含所有收集的值(每次迭代后)。问题是,与其成倍增长 科夫曼M1 科夫曼M2 在我的真实场景中,我将它们作为一个更复杂的函数的输入,该函数与 对于 迭代产生非常慢的输出。这就是为什么我想要一个解,其中矩阵的值为 科夫曼M1 科夫曼M2 被创造。然后我可以用它来创造 肌注 没有嵌套的矩阵 对于 循环。

    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 回复  |  直到 6 年前
        1
  •  2
  •   Maurits Evers    6 年前

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