Как подсказал @Chase, combn
дает вам то, что вы хотите:
nams <- apply( combn(colnames(foo),3), 2, function(z) paste(z, collapse = ''))
cols <- combn( ncol(foo), 3)
tripleSums <- apply( cols, 2, function(z) rowSums(foo[,z]))
colnames(tripleSums) <- nams
> tripleSums
var1var2var3 var1var2var4 var1var3var4 var2var3var4
[1,] 3 5 5 5
[2,] 6 8 8 8
[3,] 7 11 9 9
[4,] 10 14 12 12
[5,] 11 17 13 13
[6,] 9 10 11 6
[7,] 10 13 12 7
[8,] 13 16 15 10
[9,] 14 19 16 11
[10,] 17 22 19 14