あなたはmodel1
と自身の間の距離を持っていないので、あなたはthis questionからの回答を使用して、自分自身、ことを挿入する必要があります:
(あなたが入力されたデータに比べてモデルの間違った番号を無視することができますそれは場所にいたら、それはあなたが適切な方法で距離のあなたのベクトルを「再構築」するncol
とnrow
とmatrix()
を使用することができ、)本当に、
# Create some dummy data that has the same shape as your data:
df <- expand.grid(model1 = 1:120, model2 = 2:120)
df$distance <- runif(n = 119*120, min = 1, max = 10)
head(df)
# model1 model2 distance
# 1 2 7.958746
# 2 2 1.083700
# 3 2 9.211113
# 4 2 5.544380
# 5 2 5.498215
# 6 2 1.520450
inds <- seq(0, 200*119, by = 200)
val <- c(df$distance, rep(0, length(inds)))
inds <- c(seq_along(df$distance), inds + 0.5)
val <- val[order(inds)]
を目的を果たしていない。
matrix(val, ncol = 200, nrow = 200)
編集:
あなたのデータは一方向のみのための距離が含まれ、これだけの間、例えばmodel1 - model5
で、model5 - model1
でない場合は、hereのように、行列の上三角部分の値を入力する必要があります。この回答の最初の部分で生成したデータは忘れてしまいます。また、距離の列に1を追加することを忘れてしまいます。
dist_mat <- diag(200)
dist_mat[upper.tri(dist_mat)] <- your_data$distance
は対角線、使用の下に上三角エントリをコピーする:
dist_mat[lower.tri(dist_mat)] <- t(dist_mat)[lower.tri(dist_mat)]
私はこれを試み、それが動作しますが、問題は、行列のため、両方の(例えば)56ビット112と112〜56は、それらが同じ数であっても行列になければならない。しかし、すべての複製はファイルに含まれていないので、生成された行列は正しいとは思われません:( –
@MatthijsvanKesteren "編集"後の部分は現在あなたのケースにのみ関連しています –
遅く返事を申し訳ありません英雄です! –