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

时间:2018-01-22 14:41:24

标签: r matrix

假设您设置了这样的矩阵:

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

干杯

2 个答案:

答案 0 :(得分:1)

我们可以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

答案 1 :(得分:1)

可选地

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