Мы могли бы использовать cbind
и создать индекс столбца строки, а затем использовать его для подмножества кадра данных.
mydf[cbind(1:nrow(mydf), mydf$nn)]
#[1] "11" "12" "33" "24" "15"
Или, если вы знаете, что они всегда будут числом
as.numeric(mydf[cbind(1:nrow(mydf), mydf$nn)])
#[1] 11 12 33 24 15
где
cbind(1:nrow(mydf), mydf$nn) #gives
# [,1] [,2]
#[1,] 1 1
#[2,] 2 1
#[3,] 3 3
#[4,] 4 2
#[5,] 5 1