【发布时间】:2013-10-29 09:26:54
【问题描述】:
我有两个向量:x (n,1) 和 y (n,1) 实数值,我想从这些向量中创建一个矩阵 M (n,n),其中包含每两对之间的距离。
【问题讨论】:
我有两个向量:x (n,1) 和 y (n,1) 实数值,我想从这些向量中创建一个矩阵 M (n,n),其中包含每两对之间的距离。
【问题讨论】:
你可以使用outer函数
x <- sample(5)
y <- sample(5)
x
## [1] 1 5 3 4 2
y
## [1] 2 3 5 1 4
outer(x, y, "-")
## [,1] [,2] [,3] [,4] [,5]
## [1,] -1 -2 -4 0 -3
## [2,] 3 2 0 4 1
## [3,] 1 0 -2 2 -1
## [4,] 2 1 -1 3 0
## [5,] 0 -1 -3 1 -2
您可以将"-" 替换为任何其他可以采用 2 个向量的 FUN。
【讨论】:
看看?dist:
计算并返回通过使用指定的距离度量计算数据矩阵的行之间的距离而计算出的距离矩阵。
例子:
> set.seed(1) # to make it reproducible
> dat <- data.frame(x = sample(5), y = sample(5)) # sample values
# calculating the distance between each row
> transform(dat, distance=apply(dat, 1, dist))
x y distance
1 2 5 3
2 5 4 1
3 4 2 2
4 3 3 0
5 1 1 0
注意method,它提供了几种计算距离矩阵的方法。
【讨论】: