La expresión R estándar outer(X, Y, f)
se evalúa como una matriz cuya entrada (i, j) -th tiene el valor f(X[i], Y[j])
.¿Cómo generalizar las dimensiones externas a n?
me gustaría implementar la función de multi.outer
, una generalización n-dimensional de outer
: multi.outer(f, X_1, ..., X_n)
, donde f es alguna función n-aria, produciría un (longitud (X_1) * ... * longitud (X_n)) array cuya entrada (i_1, ..., i_n) -th tiene el valor f(X_1[i_1], ..., X_n[i_n])
para todos los conjuntos de índices válidos (i_1, ..., i_n). Claramente, para cada i en {1, ..., n}, se deben permitir todos los elementos de X_i
en multi.outer(f, X_1,...,X_i,..., X_n)
i-ésimos argumentos para la función f
. Para el caso n = 2, multi.outer
haría lo mismo que outer
, aunque tendría una firma diferente (IOW, multi.outer(f, X, Y)
sería equivalente a outer(X, Y, f)
).
Es importante tener en cuenta que, aunque los argumentos X_1, ..., X_n de multi.outer
son todos vectores, no necesariamente todos tienen el mismo modo. P.ej. X_1 y X_2 podrían ser c(1, 2, 3)
y LETTERS[10:20]
, respectivamente.
Gracias!
¡Agradable! Vea una pregunta similar (pero no tan compleja) con una respuesta similar aquí: http: // stackoverflow.com/questions/5233308/is-there-a-r-function-that-apply-a-function-to-each-pair-of-columns/5233713 # 5233713 – Aaron