给出欧氏距离函数:
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)
}
我主要担心的是表演时间。
谢谢。
答案 0 :(得分:2)
使用dist()
功能。你想要这个列的总和......
colSums(as.matrix(dist(t)))
# 1 2 3 4 5
#13.22454 31.94863 17.64302 18.70368 13.22454