r - 获取实际的 dimnames() 的函数

标签 r multidimensional-array names

我想获取给定向量、矩阵或数组的每个维度的名称。像这样的东西:

a = matrix(1, nrow=2, ncol=2, dimnames=list(c('a','b'),c('x','y')))

dimnames(a)
# [[1]]
# [1] "a" "b"
#
# [[2]]
# [1] "x" "y"

到目前为止,一切都很好。如果维度没有任何名称,则应返回 NULL:

b = c(1:5)

dimnames(b)
# NULL

也能正常工作。但是,当我这样做时:

a2 = matrix(1, nrow=2, ncol=2)

dimnames(a2)
# NULL

即使有两个轴名称分别为NULL,这也会给出NULL。因此我预计结果是:

# [[1]]
# NULL
# [[2]]
# NULL

而不是dimnames()给出的。

有什么办法可以做到这一点吗?

最佳答案

我认为基本 R 中没有内置任何内容。但是编写您自己的内容相当容易:

dimnames2 <- function(x) {
  if (is.vector(x)) {
    list(names(x))
  } else {
    d <- dimnames(x)
    if (is.null(d)) {
      rep(list(NULL), length(dim(x)))
    } else {
      d
    }
  }
}

dimnames2(1:10)
dimnames2(matrix(1:10))

关于r - 获取实际的 dimnames() 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582619/

相关文章:

r - 使用 `plotmath` 显示下标和 `[ ]` 的组合

regex - R 中第 n 次出现的正则表达式

r - 根据条件聚合 r

java - 获取 ArrayList 中二维数组的索引

function - GDB 回溯不显示函数名称

r - 将函数应用于 dplyr 的 group_by 的输出

arrays - 如何从 ListView 中的多维数组返回值(VBA)

c - 修改动态分配的 char* 二维数组的函数

r - 如何在公式中使用字符串引用变量?

php - MySQL 检索数据类型 == X 的列名