Вот пошаговая обобщенная версия решения @ r2evans:
Создать нулевую матрицу желаемого размера "решения"
m1 <- matrix(0, 4, 4)
И, для этого примера, нам нужен пример матрицы данных
m2 <- matrix(1:9, 3, 3, dimnames=list(c(1,2,4), c(1,3,4)))
m2
# 1 3 4
#1 1 4 7
#2 2 5 8
#4 3 6 9
Используйте имена строк и столбцов, чтобы получить позиции, в которые нужно поместить m2
значения
location_mat <- cbind(
as.numeric(rep(rownames(m2), ncol(m2))),
as.numeric(rep(colnames(m2), each=nrow(m2)))
)
И, для ясности, поместите значения m2
в вектор
value_vec <- as.vector(m2)
Затем "заполните" нулевую матрицу значениями m2
в нужном месте на основе имен строк и столбцов m2
(именно здесь происходит вся магия)
m1[location_mat] <- value_vec
m1
теперь должна быть требуемая матрица
m1
# [,1] [,2] [,3] [,4]
#[1,] 1 0 4 7
#[2,] 2 0 5 8
#[3,] 0 0 0 0
#[4,] 3 0 6 9