Как заметил @markus,
get(var1)[[var2]]
# [1] "first"
работает как нужно.
Я думаю, что не менее важно, почему ваш подход не сработал.Хотя
paste0(var1,"$",var2)
# [1] "data$one"
правильно описывает то, что вас интересует, data$one
само по себе не является переменной, это результат вызова функции, который также можно записать в виде:
`$`(data, one)
# [1] "first"
Теперь имеет смысл, что что-то вроде
get("`$`(data, one)")
# Error in get("`$`(data, one)") : object '`$`(data, one)' not found
не должно работать, точно так же как
get("2 + 2")
# Error in get("2 + 2") : object '2 + 2' not found