在R中循环矩阵

时间:2016-01-31 09:27:40

标签: r

我正在使用p-median开发一个位置分配问题的程序。如果有人能帮助我解决我在程序中遇到的问题,感谢。

我有三个矩阵如下: AA =

    [,1] [,2]  [,3]  
[1,]  5.50 3.28 14.20  
[2,]  12.40 2.02  7.22 
[3,]  7.63 6.47  3.48 

pop =

  [,1] [,2] [,3]
[1,] 1402  974 1052

CAP1 =

    [,1] [,2] [,3]
[1,] 4050 780 130


    diss <- apply(AA,1,sort)
    ran <- apply(AA,1,rank)
    ordd <- apply(ran,2,order)

    prone <- function (pop,diss,ordd)
    {
      if (pop <= cap1[ordd])
      {a1<-diss* pop}
      else if (pop > cap1[ordd])
     {a1<-(cap1[ordd]* diss) + ((pop-cap1[ordd])* diss[,i+1])}

该程序应该在diss处取第二个diss[,i+1]值,但它在整个循环中取最小值diss

     else if (pop-cap1[ordd]>cap1[ordd[i+1])
     {a2<-a1+(cap1[ordd[i+1]])*diss[,i+2]} 

# the looping will continue untill comply the below condition

    else (pop<=cap1[ordd[i+2]]
    }

    prone1 <- function (pop,diss,ordd)
    {
      for(i in 1:ncol(pop))
      {
        a2=prone(pop[,i],diss[,i][1],ordd[,i][1])
        if (i==1) 
        {a3<-a2}
        else if (i!=1) {a3<-rbind(a3,a2) 
        }
      }
      print(a3) 
    }
    prone1(pop,diss,ordd)

有关如何解决此问题的任何想法?

0 个答案:

没有答案