I believe you're after something like the following:
dataset <- data.frame(var1 = c("a", "b", "c"),
var2 = c("d", "e", "f"),
var3 = c("g", "h", "i"),
input_rule = c("var1, var2", "var2, var3", "var1, var2, var3"),
stringsAsFactors = FALSE)
(dataset <- within(data = dataset,
expr = {
result <- sapply(X = 1:length(input_rule),
FUN = function(t)
{
indices <- which(x = names(x = dataset[1:3]) %in% strsplit(x = input_rule[t],
split = ", ")[[1]])
paste(dataset[t, indices])
})
}))
#> var1 var2 var3 input_rule result
#> 1 a d g var1, var2 a, d
#> 2 b e h var2, var3 e, h
#> 3 c f i var1, var2, var3 c, f, i
Created on 2019-03-13 by the reprex package (v0.2.1)
Hope this helps.
PS For your future posts, please provide your data set using the datapasta package. It's much copy-paste friendly. If you're not familiar, check this out.