2016-04-15 12 views
0

以下の行列(mydf)に5つのサンプルがあります。中心からサンプルまでのユークリッド距離は、Distance列で与えられます。どのようにして、中心と交差するサンプル(例えば、A:A、A:B、A:C .... E:E)の距離の対の組み合わせの間に関係行列を形成することができるか。だから、AからA(A:A)までのユークリッド距離を計算し、次にAをB(A:B)に中心合わせするなどの方法で計算する必要があります。たとえば、AからAの中心までの距離は(0.03994220 + 0.03994220)、AからBは(0.03994220 + 0.03704120)などとなります。中心からサンプル点までのペアワイズ距離行列を作成する

mydf

samples Distance   
    A  0.03994220   
    B  0.03704120 
    C  0.03580851 
    D  0.04404073 
    E  0.04350807 
+0

@sotosペアワイズ行列を作成できませんでした。私はAからA、AからB、AからC、Eへの距離をE. – MAPK

+0

に加える必要があるので、ペアワイズ距離の別のデータフレームが必要ですか? – Sotos

+0

@Sotosはい私はちょうどペアワイズ関係の別のデータフレームがほしい。 – MAPK

答えて

1

これはあなたが後にしている何ですか?

df1 <- as.data.frame(outer(df$Distance,df$Distance, '+')) 
df1 
#   V1   V2   V3   V4   V5 
#1 0.07988440 0.07698340 0.07575071 0.08398293 0.08345027 
#2 0.07698340 0.07408240 0.07284971 0.08108193 0.08054927 
#3 0.07575071 0.07284971 0.07161702 0.07984924 0.07931658 
#4 0.08398293 0.08108193 0.07984924 0.08808146 0.08754880 
#5 0.08345027 0.08054927 0.07931658 0.08754880 0.08701614 
+1

'rownames'と' colnames'を見てください – Sotos

+0

申し訳ありません、これは私が持っているデータフレームでは機能しません: 'df <-structure(list(V1 = = Cの( "860"、 "861"、 "862"、 "2529"、 "2530")、.LABEL = C( "0.0321300642107672"、 "0.0330817724920314"、 "0.0339978194537914"、 "0.0413104564905709"、 「0.0415935059053326 "、class =" factor "))、.Names =" Distance "、row.names = c(" 860 "、 " 861 "、" 862 "、" 2529 "、" 2530 ")、class =" data .frame ")' – MAPK

+1

これは最初に数値に変換されます – Sotos

関連する問題