【问题标题】:Create an auxiliary function in R for a matrix:在 R 中为矩阵创建一个辅助函数:
【发布时间】:2016-01-20 18:24:56
【问题描述】:

我有以下矩阵:

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

编辑:如果涉及多个城市(伯克利->旧金山->帕洛阿尔托等),我认为您必须使用某种循环?会不会是重复循环?

【问题讨论】:

  • 你能把dput(matrix)的结果加进去,然后把图片去掉。还给我们城市名称的向量以及您想要的结果。我们无法从图片中加载数据。

标签: r matrix


【解决方案1】:

如果这是你的矩阵:

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)
   }

【讨论】:

  • 如果有多个城市我想求距离怎么办?例如,伯克利到奥克兰到旧金山?我会使用重复循环吗?
猜你喜欢
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多