Мы можем преобразовать data.frame в матрицу и использовать его в качестве индекса строки / столбца, чтобы извлечь значения из 'M' и присвоить его новому столбцу в 'df1'
df1['C'] <- M[as.matrix(df1)]
df1
# A B C
#1 1 3 0
#2 2 2 4
или другой опции cbind
(который по умолчанию создает matrix
) извлеченные столбцы из data.frame
df1['C'] <- M[cbind(df1$A, df1$B)]
data
df1 <- data.frame(A = 1:2, B = c(3, 2))
M <- cbind(c(1, 2, 2), c(3, 4, 1), c(0, 5, 6))