gpt4 book ai didi

r - 过滤矩阵列时保留列名

转载 作者:行者123 更新时间:2023-12-04 05:18:51 24 4
gpt4 key购买 nike

我有一个矩阵,就像用此代码生成的矩阵:

> m = matrix(data=c(1:50), nrow= 10, ncol = 5);
> colnames(m) = letters[1:5];

如果我过滤列,并且结果有多个列,则新矩阵保留名称。例如:
> m[, colnames(m) != "a"];

b c d e
[1,] 11 21 31 41
[2,] 12 22 32 42
[3,] 13 23 33 43
[4,] 14 24 34 44
[5,] 15 25 35 45
[6,] 16 26 36 46
[7,] 17 27 37 47
[8,] 18 28 38 48
[9,] 19 29 39 49
[10,] 20 30 40 50

请注意,这里的类仍然是矩阵:
> class(m[, colnames(m) != "a"]);
[1] "matrix"

但是,当过滤器只允许一列时,结果是向量(在这种情况下为整数向量),并且列名丢失了。
> m[, colnames(m) == "a"]
[1] 1 2 3 4 5 6 7 8 9 10

> class(m[, colnames(m) == "a"]);
[1] "integer"

列的名称非常重要。

我想同时保留矩阵结构(一列矩阵)和列的名称。

但是,列的名称更为重要。

我已经知道如何从长远角度解决此问题(通过跟踪每种情况)。我想知道是否有一个优雅的,启发性的解决方案。

最佳答案

您需要设置drop = FALSE。这对于以编程方式使用

drop

For matrices and arrays. If TRUE the result is coerced to the lowest possible dimension (see the examples)

m[,'a',drop=FALSE]
是一个好习惯
这也将保留名称。

关于r - 过滤矩阵列时保留列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com