2014-03-13 39 views
0

假設我有一個data.frame a(每個觀察是連續的)並計算距離矩陣。問題是,是否有任何功能可以將觀察距離5與所有其他觀察結果相提並論。如何從一個dist對象獲得一個觀測值與所有其他觀測值的距離?

> a=data.frame(A=rnorm(10), B=rnorm(10), C=rnorm(10)) 
> b=dist(a) 
> b 
      1   2   3   4   5   6   7   8   9 
2 1.6118634 
3 0.4891468 1.3382692 
4 1.2002947 1.7516061 0.9160975 
5 1.8128570 0.3197837 1.5192406 1.7709168 
6 0.7280433 1.2628696 0.4063128 1.2411639 1.4971098 
7 1.7616767 0.7400666 1.4512844 1.4355922 0.5168996 1.5524980 
8 3.1033274 3.3739578 2.7297046 2.2281075 3.3693333 2.7738859 3.1216145 
9 2.0916857 1.6749526 1.6717408 2.0293415 1.8196557 1.3704288 1.9824870 2.4013682 
10 1.5949320 1.7309838 1.1680365 0.6331770 1.7255615 1.3234977 1.4333926 1.7798153 1.6126823 

回答

0

只要將它轉換成一個矩陣:

as.matrix(b)[5,] 
+0

如果矩陣很大並且您不想佔用大量內存,該怎麼辦? – RNA

0

退房的pdist包。它基本上返回as.matrix(dist(x))將返回的單行......因此您不必計算所有內容。

http://cran.r-project.org/web/packages/pdist/index.html

+0

注意'pdist(...)'的語法很奇怪。爲了產生與@joran相同的結果,你需要'as.vector(pdist(a [5,],a)@dist)'。 – jlhoward

相關問題