r语言 - 设置数组中矩阵的行名



我有一个由许多2*3矩阵组成的数组。

我想给数组中每个矩阵的两行取相同的行名。我正在尝试dimnames(),但是我没有得到我想要的。

c1a <- c("1a","1a","1a")
c1b <- c("1b","1b","1b")
c2a <- c("2a","2a","2a")
c2b <- c("2b","2b","2b")
c3a <- c("3a","3a","3a")
c3b <- c("3b","3b","3b")
df1 <- as.data.frame(rbind(c1a,c2a,c3a))
df2 <- as.data.frame(rbind(c1b,c2b,c3b))
my.arr <- simplify2array(unname(Map(rbind, asplit(df1, 1), asplit(df2, 
1))))
dimnames(Y)[[1]] <- c("a", "b")

我们可以对dimnames这样做。不需要任何循环

dimnames(my.arr)[[1]] <- c('a', 'b')

与产出

> my.arr
, , 1
V1   V2   V3  
a "1a" "1a" "1a"
b "1b" "1b" "1b"
, , 2
V1   V2   V3  
a "2a" "2a" "2a"
b "2b" "2b" "2b"
, , 3
V1   V2   V3  
a "3a" "3a" "3a"
b "3b" "3b" "3b"

使用apply超过三维-

apply(my.arr, 3, function(x) {rownames(x) <- c('a', 'b');x}, simplify = FALSE)
#[[1]]
#   V1   V2   V3  
#a "1a" "1a" "1a"
#b "1b" "1b" "1b"
#[[2]]
#   V1   V2   V3  
#a "2a" "2a" "2a"
#b "2b" "2b" "2b"
#[[3]]
#   V1   V2   V3  
#a "3a" "3a" "3a"
#b "3b" "3b" "3b"

最新更新