如何摆脱矩阵中的空dimnames

时间:2015-07-22 11:29:25

标签: r list matrix attributes

我有两个矩阵,当我显示它们时看起来一样。它们都是矩阵:

> is.matrix(z)
[1] TRUE
> is.matrix(z1)
[1] TRUE

但是attributes()明显不同,其中一个看起来仍然是一个列表,并再显示一行:

> attributes(z)
$dim
[1]  54 252

> attributes(z1)
$dim
[1]  55 252

$dimnames
$dimnames[[1]]
NULL

$dimnames[[2]]
NULL

后者在任何下游应用程序中都给出了错误。附加行似乎是一个单独的问题(?)所以我正在调查,但有没有办法摆脱$dimnames信息?

2 个答案:

答案 0 :(得分:2)

这很直接:

dimnames(z1) <- NULL

使用以下代码进行测试:

z <- z1 <- matrix(1:100, nrow = 10)
dimnames(z1) <- list(NULL, NULL)
attributes(z)
# $dim
# [1] 10 10
attributes(z1)
# $dim
# [1] 10 10

# $dimnames
# $dimnames[[1]]
# NULL

# $dimnames[[2]]
# NULL

dimnames(z1) <- NULL
attributes(z1)

# $dim
# [1] 10 10

现在我的问题是,空的dimnames属性来自哪里?

答案 1 :(得分:1)

你可以这样试试:

mat <- matrix(1, ncol = 1, dimnames = list(NULL, NULL))
attributes(mat)
# $dim
# [1] 1 1
# 
# $dimnames
# $dimnames[[1]]
# NULL
# 
# $dimnames[[2]]
# NULL

attr(mat, "dimnames") <- NULL
attributes(mat)
# $dim
# [1] 1 1