Вы можете использовать outer с векторизованной версией вашей функции, используя mapply.
outer
mapply
id <- seq_along(colnames(ddf)) outer(id,id,function(x,y)mapply(myfunction,ddf[,x],ddf[,y]))