说我有一个和两个矩阵:
> 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中的列名和行名相同?
你在找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是不同的.