验证R中矩阵之间的行名和列名是否相同

E. *_*Mun 2 r matrix

说我有一个和两个矩阵:

    > one <- matrix(1:9, nrow=3, ncol=3, dimnames=list(c("X","Y","Z"), c("A", "B", "C")))
    > one
      A B C
    X 1 4 7
    Y 2 5 8
    Z 3 6 9
    > two <- matrix(1:9, nrow=3, ncol=3, dimnames=list(c("X","Y","Z"), c("WRONG", "B", "C")))
    > two
      WRONG B C
    X     1 4 7
    Y     2 5 8
    Z     3 6 9
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以生成逻辑值来验证矩阵1的列名和行名是否与矩阵2中的列名和行名相同?

Ric*_*ven 5

你在找identical().对于行名称 -

identical(rownames(one), rownames(two))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)

同样的colnames().对于所有人dimnames(),同样的事情 -

identical(dimnames(one), dimnames(two))
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)

对于行和列同时单独 -

Map(identical, dimnames(one), dimnames(two))
# [[1]]
# [1] TRUE
#
# [[2]]
# [1] FALSE
Run Code Online (Sandbox Code Playgroud)

更新:在回复您的评论时,您可以尝试使用多个矩阵

length(unique(lapply(list(one, two, three), dimnames))) == 1 
Run Code Online (Sandbox Code Playgroud)

如果返回FALSE,您知道至少有一组dimnames是不同的.

  • 对于额外的upvotes,链接:`library(magrittr); list(one,two)%>%lapply(dimnames)%>%Reduce("same",.)` (2认同)
  • 我不需要额外的支持,谢谢. (2认同)