Мы можем сделать поднабор матрицы.
df$new_col <- df[cbind(1:nrow(df), df$Type)]
df
# Var1 Var2 Var3 Type new_col
#1 3.3 2.3 5.5 1 3.3
#2 3.4 2.0 7.5 2 2.0
#3 2.9 1.9 6.2 1 2.9
#4 3.1 2.2 5.9 1 3.1
#5 3.3 2.1 7.1 3 7.1
data
df <- structure(list(Var1 = c(3.3, 3.4, 2.9, 3.1, 3.3), Var2 = c(2.3,
2, 1.9, 2.2, 2.1), Var3 = c(5.5, 7.5, 6.2, 5.9, 7.1), Type = c(1L,
2L, 1L, 1L, 3L)), class = "data.frame", row.names = c(NA, -5L))