combinación de expand.grid y mapply?

Estoy tratando de encontrar una variante demapply (llámaloxapply por ahora) que combina la funcionalidad (más o menos) deexpand.grid ymapply. Es decir, para una funciónFUN y una lista de argumentosL1, L2, L3, ... de longitud desconocida, debería producir una lista de longitudn1*n2*n3 (dóndeni es la longitud de la listai) que es el resultado de aplicarFUN a todas las combinaciones de los elementos de la lista.

Siexpand.grid trabajó para generar listas de listas en lugar de marcos de datos, uno podría usarlo, pero tengo en cuenta que las listas pueden ser listas de cosas que no necesariamente encajan perfectamente en un marco de datos.

Esta función funciona bien si hay exactamente tres listas para expandir, pero tengo curiosidad acerca de una solución más genérica. FLATTEN no está en uso, pero me imagino queFLATTEN=FALSE generaría listas anidadas en lugar de una sola lista ...)

xapply3 <- function(FUN,L1,L2,L3,FLATTEN=TRUE,MoreArgs=NULL) {
  retlist <- list()
  count <- 1
  for (i in seq_along(L1)) {
    for (j in seq_along(L2)) {
      for (k in seq_along(L3)) {
        retlist[[count]] <- do.call(FUN,c(list(L1[[i]],L2[[j]],L3[[k]]),MoreArgs))
        count <- count+1
      }
    }
  }
  retlist
}

editar olvidó devolver el resultado. Uno podría resolver esto haciendo una lista de los índices concombn y yendo desde allí ...

Respuestas a la pregunta(1)

Su respuesta a la pregunta