假设你设置了一个矩阵,如下所示:
text <- c(35, 1, 23, 17, 29, 3, 3, 31, 21, 15, 18, 22, 48, 0, 10, 42)
mtr <- matrix(text, nrow = 4, ncol = 4)
View(mtr)
35 29 21 48
1 3 15 0
23 3 18 10
17 31 22 42
我如何更改矩阵,以便每隔一行向上移动并穿过一个插入的单元格,即:
35 1 29 3 21 15 48 0
23 17 3 31 18 22 10 42
因此,而不是:
A1 B1 C1 D1
A2 B2 C2 D2
A3 B3 C3 D3
A4 B4 C4 D4
它说:
A1 A2 B1 B2 C1 C2 D1 D2
A3 A4 B3 B4 C3 C4 D3 D4
干杯
或者
m <- cbind(mtr[c(TRUE,FALSE),], mtr[c(FALSE, TRUE),])
m[, c(matrix(seq(ncol(m)), nrow = 2, byrow = TRUE))]
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] 35 1 29 3 21 15 48 0
#[2,] 23 17 3 31 18 22 10 42
我们可以做一个split
和rbind
do.call(rbind, split(mtr, as.numeric(gl(nrow(mtr), 2, nrow(mtr)))))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#1 35 1 29 3 21 15 48 0
#2 23 17 3 31 18 22 10 42