既然你没有model1
和自身之间的距离,你需要插入自己使用的答案从this question:
(可以忽略模型的错误编号相比,你的输入数据,它不服务于一个目的,真的)
# 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()
与ncol
和nrow
为“重塑”你的距离矢量在适当的方式:
matrix(val, ncol = 200, nrow = 200)
编辑:
当你的数据只包含距离为一个方向,所以只有之间例如model1 - model5
而不是model5 - model1
,你将不得不填充矩阵的上三角部分的值,就像他们做here。忘记我在这个答案的第一部分中生成的数据。另外,忘记将其添加到距离列中。
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我编辑了我的答案。“编辑”后面的部分现在只适用于您的案例 –
对不起,对于回复迟是英雄! –