Если я создаю матрицу с нуля, я могу поднастроить ее различными способами, сохранив имена столбцов:
tmp2 <- matrix(sample(9), nrow = 3)
colnames(tmp2) <- letters[1:3]
tmp2
a b c
[1,] 1 3 8
[2,] 7 2 6
[3,] 5 4 9
tmp2[2, 2:3]
b c
2 6
tmp2[3, 1]
a
5
В каждом случае имена столбцов сохраняются в подмножестве. Однако, если я создаю матрицу путем преобразования объекта расстояния, поведение изменится:
tmp <- matrix(sample(1:12), nrow = 3)
row.names(tmp) <- letters[1:3]
tmpD <- dist(tmp)
tmpDM <- as.matrix(tmpD)
tmpDM
a b c
a 0.000000 9.848858 8.544004
b 9.848858 0.000000 10.099505
c 8.544004 10.099505 0.000000
tmpDM[2, 2:3]
b c
0.0000 10.0995
tmpDM[3, 1]
[1] 8.544004
Обратите внимание, что в последнем примере имя столбца удаляется. Это проблема, если мне нужно вычислить значение ячейки и имя столбца.
Почему это происходит, и, что более важно, как мне это остановить? Мне нужно это имя столбца, даже если в подмножестве только один столбец.
R версия 3.6.3 (2020-02-29) - «Удержание ветрового носка»