对单行矩阵/数组进行子集化并返回行名称

问题描述 投票:0回答:1

我有一个矩阵:

lil_matrix <- matrix(data = 1:4,
                  nrow = 2,
                  dimnames = list(c("Row1", "Row2"),
                                  c("Col1", "Col2")))

当我对列进行子集化时,它返回一个命名的数字向量。

lil_matrix[,1]

enter image description here

如果我的矩阵是一行并且我是一列的子集,则该向量是未命名的。

lil_matrix[1, , drop = FALSE][,1]

enter image description here

当我对一列进行子集化时,我需要这个行矩阵来返回一个命名向量。使用上面的示例,它应该返回 Row1 作为名称,1 作为值。

解决方案需要尽可能高效。

谢谢!

r arrays matrix
1个回答
0
投票

一种可能的解决方案是为子集矩阵创建一个新对象:

r1 <- lil_matrix[1, , drop = FALSE]

然后对列进行子集化:

rc <- r1[,1]

然后为向量设置名称:

names(rc) <- row.names(r1)

我希望有一个更有效的解决方案,不需要创建两个新对象。

© www.soinside.com 2019 - 2024. All rights reserved.