The most obvious solution (though it is a hidden loop) is to use apply
, like this:
df = data.frame(Start=c(1,12,20), Stop=c(4,16,22))
df
# Start Stop
# 1 1 4
# 2 12 16
# 3 20 22
mlist <- letters
apply(df, 1, function(x) mlist[x[1]:x[2]])
# [[1]]
# [1] "a" "b" "c" "d"
#
# [[2]]
# [1] "l" "m" "n" "o" "p"
#
# [[3]]
# [1] "t" "u" "v"