У меня есть фрейм данных из 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
являются 1+ идентификаторами элементов df
).
Итак, ожидаемый результат:
df$Distances = c(1.091953, 1.783120, 1.783147, 1.783157, 1.091952, 1.783158,
1.783148, 1.091946, 1.783148, 1.091948)
Как я могу эффективно извлечь это (фактические структуры данных намного больше)?