我有一个由许多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"