#r
#r
Вопрос:
Как бы я изменил форму матрицы, в которой мне понадобились бы каждые 2 строки, чтобы начать новый столбец, и каждый столбец должен быть в третьем измерении в R? Я действительно не пробовал ничего, кроме dim()
того, что, очевидно, не сработало, так как мне трудно обдумать это преобразование.
Что у меня есть:
d h
c g
b f
a e
Чего я хочу:
[ , , 1]
b d
a c
[ , , 2]
g h
e f
Ответ №1:
Я думаю, вы можете получить требуемую структуру вашей матрицы, настроив dim
атрибут.
Я добавил две дополнительные строки в вашу матрицу, это выглядит так :
mat <- structure(c("d", "c", "b", "a", "k", "l", "h", "g", "f", "e",
"j", "m"), .Dim = c(6L, 2L))
mat
# [,1] [,2]
#[1,] "d" "h"
#[2,] "c" "g"
#[3,] "b" "f"
#[4,] "a" "e"
#[5,] "k" "j"
#[6,] "l" "m"
Чтобы перевести каждый столбец в 3-е измерение и только 2 значения в каждом столбце, вы можете сделать :
dim(mat) <- c(2, nrow(mat)/2, ncol(mat))
mat
#, , 1
# [,1] [,2] [,3]
#[1,] "d" "b" "k"
#[2,] "c" "a" "l"
#, , 2
# [,1] [,2] [,3]
#[1,] "h" "f" "j"
#[2,] "g" "e" "m"
Ответ №2:
Мы можем использовать array
array(t(df1), c(2, 2, 2))