在R中为矩阵创建辅助函数:

时间:2015-10-21 16:33:57

标签: r matrix

我有以下矩阵:

Picture of matrix

专栏&行名称是城市名称,矩阵的每个点都是两个城市之间的距离(以英里为单位)。例如,如果我的观点是[SanFrancisco,Berkeley],那么距离是13.9。我试图找出一个给出城市向量的函数,以及城市之间的距离矩阵,该函数返回所提供城市之间的总距离。我真的不知道从哪里开始。

编辑:如果涉及多个城市(Berkeley - > SanFrancisco-> PaloAlto等),我认为你必须使用某种循环?它会重复循环吗?

1 个答案:

答案 0 :(得分:0)

如果这是你的矩阵:

matrix <- structure(c(0, 3, 5, 3.6, 0, 2.1, 6, 1.9, 0), .Dim = c(3L, 3L
), .Dimnames = list(c("Vienna", "Berlin", "Prague"), c("Vienna", "Berlin", "Prague")))

           Vienna Berlin Prague
Vienna      0    3.6    6.0
Berlin      3    0.0    1.9
Prague      5    2.1    0.0

您可以使用基本子集执行以下操作:

matrix["Vienna","Berlin"]

你会得到

[1] 3.6

但是,如果您想要自定义功能,则可以执行以下操作:

    #define function
    getDist <- function(cityVector, matrix) {

      dist <- 0
      n    <- length(cityVector) - 1

      for(i in 1:n)  {
          dist <- dist + matrix[cityVector[i], cityVector[i+1]]
      }

      return(dist)
   }