我有两个矩阵,当我显示它们时看起来一样。它们都是矩阵:
> 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
信息?
答案 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