Следующие действия могут помочь:
m1 <- matrix(c('AAAA12', 'AAAA23', 'AAAA14'))
m2 <- cbind(c('AAAA23', 'AAAA12', 'AAAA14'), c('Jan', 'Feb', 'Mar'))
cbind(m1, m2[match(m1[,1], m2[,1]),2])
Что дает вам
[,1] [,2]
[1,] "AAAA12" "Feb"
[2,] "AAAA23" "Jan"
[3,] "AAAA14" "Mar"
... А затем синхронизация примерно в 90000 строк показывает, что это займет около 0,04 секунды:
x <- outer(outer(outer(LETTERS, LETTERS, paste, sep=''),
LETTERS, paste, sep=''), 1:5, paste, sep='')
set.seed(42)
m1 <- matrix(sample(x, 85000))
m2 <- cbind(x, seq_along(x))
system.time( cbind(m1, m2[match(m1[,1], m2[,1]),2]) ) # 0.04 seconds