Your desired output seems a bit strange (multiple combinations are the same), but I understand it might be hard to explain what you want. The following code might give you some inspiration. It takes all combinations and in front of the =>
it shows whats not included in that combination.
dat<-data.frame(A=c("V1","V2","V3","V4"),B=c("V1","V2","V3","V4"))
for (h in 1:ncol(dat)) {
for (i in 1:(nrow(dat)-1)) {
combinations1 <- combn(nrow(dat), i)
for (j in 1:ncol(combinations1)) {
k <- combinations1[,j]
a <- (dat[k,h])
a <- paste(a, sep="", collapse="")
b <-(dat[-k,h])
b <- paste(b, sep="", collapse="")
cat(sprintf("\"%s\" =>\"%s\"\n", a, b))
}
}
}