To get what you want do this
merge(df1, df2, by = c("chrom", "pos", "genSym"), all = T)
I would also just as a learning experience, try this
merge(df, df.other,by=x,all=T)
and this is a good reference https://stackoverflow.com/a/1300618/2747709 for understanding outer, left join, right join etc and look at the other answers for sql style matching.