L'expression R standard outer(X, Y, f)
évalue une matrice dont l'entrée (i, j) -th a la valeur f(X[i], Y[j])
.Comment généraliser des dimensions extérieures à n dimensions?
Je souhaite mettre en oeuvre la fonction multi.outer
, une généralisation à n dimensions de outer
: multi.outer(f, X_1, ..., X_n)
, où f est une fonction n-aire, produirait un (* ... * longueur longueur (X_1) (X_n)) tableau dont l'entrée (i_1, ..., i_n) -th a la valeur f(X_1[i_1], ..., X_n[i_n])
pour tous les ensembles d'index valides (i_1, ..., i_n). Clairement, pour chaque i dans {1, ..., n}, tous les éléments de X_i
dans multi.outer(f, X_1,...,X_i,..., X_n)
doivent être permis par des arguments pour la fonction f
. Pour le cas n = 2, multi.outer
ferait la même chose que outer
, bien qu'il aurait une signature différente (IOW, multi.outer(f, X, Y)
serait équivalent à outer(X, Y, f)
).
Il est important de noter que, bien que les arguments X_1, ..., X_n de multi.outer
soient tous des vecteurs, ils n'ont pas nécessairement tous le même mode. Par exemple. X_1 et X_2 pourraient être c(1, 2, 3)
et LETTERS[10:20]
, respectivement.
Merci!
Nice! Voir une question similaire (mais pas aussi complexe) avec une réponse similaire ici: http: // stackoverflow.com/questions/5233308/is-there-a-r-function-that-applique-a-function-to-each-pair-of-columns/5233713 # 5233713 – Aaron