Хорошо, предположим, у вас есть тренировочная матрица с (истинными) именами строк:
m <- rbind(c(10,8,2),
c(9,8,7),
c(10,6,5))
rownames(m) <- c("Bob", "Denise", "Ernie")
где:
> class(m)
[1] "matrix"
> m
[,1] [,2] [,3]
Bob 10 8 2
Denise 9 8 7
Ernie 10 6 5
>
и большая пустая выходная матрица:
e <- matrix(NA_real_, nrow=5, ncol=3)
rownames(e) <- c("Alice", "Bob", "Carla", "Denise", "Ernie")
где:
> e
[,1] [,2] [,3]
Alice NA NA NA
Bob NA NA NA
Carla NA NA NA
Denise NA NA NA
Ernie NA NA NA
>
В этом случае вы можете использовать функцию match()
для генерации вектора индексов строк в пустой выходной матрице, которые соответствуют строкам входной матрицы:
o <- match(rownames(m), rownames(e))
if (any(is.na(o))) stop("oops -- didn't match everyone")
дает:
> o
[1] 2 4 5
>
, а затем после:
e[o,] <- m
матрица вывода будет иметь желаемое содержимое:
> e
[,1] [,2] [,3]
Alice NA NA NA
Bob 10 8 2
Carla NA NA NA
Denise 9 8 7
Ernie 10 6 5
>