Заменить значения в матрице на другой размер в R - PullRequest
0 голосов
/ 01 мая 2020

Я хочу заменить значения в первом столбце mat1

mat1 <- matrix(c("vect-1822", "vect3", "vect-1818", "vect3", "vect-2030", "vect4", "vect-1926", "vect5", "vect-1818", "vect9", "vect-1818", "vect3", "vect-2030", "vect7"), ncol = 2, byrow=T)

значениями из второго столбца в mat2:

mat2 <- matrix(c("vect-1822", "1", "vect-1818", "33", "vect-2030", "34", "vect-1926", "42"), ncol = 2, byrow=T)

Результат будет:

mat_res <- matrix(c("1", "vect3", "33", "vect3", "34", "vect4", "42", "vect5", "33", "vect9", "33", "vect3", "34", "vect7"), ncol = 2, byrow=T)

Я пытался с двумя индексами i и j, но это не оптимально, потому что моя матрица очень большая

1 Ответ

0 голосов
/ 01 мая 2020

Мы можем использовать именованный вектор для сопоставления и замены

mat3 <- mat1
mat3[,1] <- setNames(mat2[,2], mat2[,1])[mat1[,1]]

-проверки с выводом OP

identical(mat3, mat_res)
#[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...