Для этого вы можете использовать конструкцию eval-parse, но еще раз предупреждаю, что это действительно сложный бизнес. Пожалуйста, прочитайте справочные файлы об этих двух очень внимательно. Так что в вашем случае это становится:
subset(df,eval(parse(text=paste(RF1,RR1,RV1))))
Пример, иллюстрирующий некоторые хитрые части:
> RF1 <- "optype"
> RR1 <- "=="
> RV1 <- "\"RECEIVE\""
> optype <- c("RECEIVE","Not")
> ifelse(eval(parse(text=paste(RF1,RR1,RV1))),1,0)
[1] 1 0
Запомните экранированные кавычки (\ "). Это необходимо, если вы хотите проверить строку, а не объект RECEIVE. Также вы можете сделать:
> RF1 <- "optype"
> RR1 <- "=="
> RV1 <- "Text"
> optype <- c("RECEIVE","Not")
> Text <- "RECEIVE"
> ifelse(eval(parse(text=paste(RF1,RR1,RV1))),1,0)
[1] 1 0