I am sending to this forum as stackoverflow has devolved into sth pretty bad. Below code shows how to get what I want in a clumsy way.
cols <- letters[1:4] a1 <- outer(cols,cols,paste0) b1 <- a1[!lower.tri(a1)] X <- matrix(rnorm(80),ncol=4) colnames(X) <- cols X <- as.data.frame(X) XX <- matrix(0,nrow=nrow(X),ncol=length(b1)) colnames(XX) <- b1 for (k in 1:length(b1)){ XX[,k] <- X[,substr(b1[k],1,1)]*X[,substr(b1[k],2,2)] } Is there a way to get that using a formula or some neat trick? The above will not work for factors, so I will need to create the factor crossings using formula a*b*c and then cross with the numerics, which is even more clumsy. Thanks everybody ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide https://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.