R矢量化 - 减去矢量

时间:2014-09-12 21:04:40

标签: r vectorization

给出欧氏距离函数:

eDistance <- function(q,m){
  apply(m,1,function(x){
    sqrt(sum((q-x)^2))
  })
}

以下矩阵:

t = cbind(c(3,4,1,6,3),c(1,9,1,2,1))

我想找到一种矢量化的方法来执行以下操作:

r = rep(NA,nrow(t))
for (i in 1:nrow(t)){
  tmp = eDistance(t[i,],t)
  r[i] = sum(tmp)
}

我主要担心的是表演时间。

谢谢。

1 个答案:

答案 0 :(得分:2)

使用dist()功能。你想要这个列的总和......

colSums(as.matrix(dist(t)))
#       1        2        3        4        5 
#13.22454 31.94863 17.64302 18.70368 13.22454