Génération de variables d'interaction dans les bases de données R

Est-il un moyen autre qu'une boucle for - pour générer de nouvelles variables dans une R dataframe, qui seront tous les 2-interactions entre les existants?
c'est à dire la supposition d'un dataframe avec trois variables numériques V1, V2, V3, je voudrais générer de nouvelles variables:

Inter.V1V2 (= V1 * V2) 
Inter.V1V3 (= V1 * V3)
Inter.V2V3 (= V2 * V3)

Exemple à l'aide de la boucle :

x <- read.table(textConnection('
   V1 V2 V3 V4
1  9   25   18
2  5   20   10
3  4   30   12
4  4   34   16'
), header=TRUE)

dim.init <- dim(x)[2]
for (i in 1: (dim.init - 1) ) {
        for (j in (i + 1) : (dim.init) ) {
                x[dim(x)[2] + 1]    <- x[i] * x[j]
                names(x)[dim(x)[2]] <- paste("Inter.V",i,"V",j,sep="")

        }
}

source d'informationauteur George Dontas