【发布时间】:2020-07-22 13:56:09
【问题描述】:
如果我从头开始创建一个矩阵,我可以通过各种方式对其进行子集化,同时保留列名:
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) -- “握住风向袋”
【问题讨论】:
标签: r