【发布时间】:2019-05-30 08:35:05
【问题描述】:
我有一个5项的数据框,如下:
df = structure(list(item1 = c(1, 1, 1, 1, 2, 2, 2, 3, 3, 4), item2 = c(0,
2, 3, 4, 0, 3, 4, 0, 4, 0)), row.names = c(NA, -10L), class = c("tbl_df",
"tbl", "data.frame"))
另外,我还有项目之间的距离矩阵:
Dist1 = structure(c(0, 1.0919530596119, 1.09195161858136, 1.0919463791331,
1.09194754111203, 1.0919530596119, 0, 1.7831197560388, 1.78314749640301,
1.78315668532962, 1.09195161858136, 1.7831197560388, 0, 1.78315765983813,
1.78314839437957, 1.0919463791331, 1.78314749640301, 1.78315765983813,
0, 1.78314787222978, 1.09194754111203, 1.78315668532962, 1.78314839437957,
1.78314787222978, 0), .Dim = c(5L, 5L), .Dimnames = list(c("1",
"2", "3", "4", "5"), c("1", "2", "3", "4", "5")))
我想向df 添加第三个列,它将包含从Dist1 中提取的距离。它们必须与 df 中的索引指定的顺序相同,不包含 self dist 等。
现在,这几乎是Dist1 的下三角形,但不完全是。 (另请注意,Dist1 中的项目是 df 的项目标识的 1+)。
所以,预期的输出是:
df$Distances = c(1.091953, 1.783120, 1.783147, 1.783157, 1.091952, 1.783158,
1.783148, 1.091946, 1.783148, 1.091948)
我怎样才能有效地提取这个(实际的数据结构要大得多)?
【问题讨论】:
-
第一个值是
Dist1[2, 1]还是第二个是Dist1[3, 2]? -
@RonakShah df 值的顺序只是从外部给出的。目的是将距离矩阵输出的顺序与df的顺序相匹配
标签: r euclidean-distance