更改 R 周围矩阵中单元格的顺序



假设你设置了一个矩阵,如下所示:

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

我们可以做一个splitrbind

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

最新更新