R:如何存储矢量矢量

时间:2010-11-13 13:13:40

标签: r vector

我正在尝试编写一个函数来确定x(一个点)和y(一组n个点)之间的欧氏距离。 我应该如何将y传递给函数?到现在为止,我使用了这样的矩阵:

     [,1] [,2] [,3]
[1,]    0    2    1
[2,]    1    1    1

将点(0,2,1)和(1,1,1)传递给该函数。

但是,当我将x作为普通(列)向量传递时,这两个变量在函数中不匹配。 我要么必须转置x或y,要么以其他方式保存向量矢量。

我的问题:在R中保存多个向量的标准方法是什么? (我的矩阵y)
它只是我的y转置或可能是列表或数据框?

2 个答案:

答案 0 :(得分:1)

没有标准的方法,所以你应该选择最有效的方法,另一方面又取决于这个向量矢量在创建之后的样子(最好避免任何不必要的转换),以及功能本身的速度。

我相信带有x,y和z列的data.frame应该是不错的选择;距离函数将非常简单快速:

d<-function(x,y) sqrt((y$x-x[1])^2+(y$y-x[2])^2+(y$z-x[3])^2)

答案 1 :(得分:0)

margin参数= 1的apply函数似乎最明显:

> x
     [,1] [,2] [,3]
[1,]    0    2    1
[2,]    1    1    1
> apply(x , 1, function(z) crossprod(z, 1:length(z) )  )
[1] 7 6
> 2*2+1*3
[1] 7
> 1*1+2*1+3*1
[1] 6

因此,如果你想要距离,那么差异的交叉积与选择点的平方根似乎有效:

> apply(x , 1, function(z) sqrt(sum(crossprod(z -c(0,2,2), z-c(0,2,2) ) ) ) )
[1] 1.000000 1.732051