Как объединить матрицу на основе имен строк и столбцов - PullRequest
2 голосов
/ 15 апреля 2019

Я хотел бы объединить две матрицы на основе имен строк и столбцов. Вот пример:

mat1 <- matrix(c(0,0,1,0,1,0,1,1,0), nrow=3, byrow=TRUE)
colnames(mat1) <- c("A", "B", "C")
rownames(mat1) <- c("x", "y", "z")
mat1

  A B C
x 0 0 1
y 0 1 0
z 1 1 0

mat2 <- matrix(0, nrow=4, ncol = 6)
colnames(mat2) <- c("A", "B", "C", "D", "E", "F")
rownames(mat2) <- c("w", "x", "y", "z")
mat2

  A B C D E F
w 0 0 0 0 0 0
x 0 0 0 0 0 0
y 0 0 0 0 0 0
z 0 0 0 0 0 0

Как эффективно записать значения mat1 в mat2? Я хотел бы получить:

  A B C D E F
w 0 0 0 0 0 0
x 0 0 1 0 0 0
y 0 1 0 0 0 0
z 1 1 0 0 0 0

Я пробовал for петли, но это кажется утомительным и неэффективным. Идеи?

1 Ответ

3 голосов
/ 15 апреля 2019

Если 'mat2' является расширенным набором 'mat1', то используйте индексирование строки / столбца для поднабора 'mat2' и присвойте 'mat1'

mat2[row.names(mat1), colnames(mat1)] <- mat1
mat2
#   A B C D E F
# w 0 0 0 0 0 0
# x 0 0 1 0 0 0
# y 0 1 0 0 0 0
# z 1 1 0 0 0 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...