L'espressione R standard outer(X, Y, f)
restituisce una matrice la cui voce (i, j) -th ha il valore f(X[i], Y[j])
.Come generalizzare l'esterno in n dimensioni?
desidero implementare la funzione multi.outer
, una generalizzazione n-dimensionale di outer
: multi.outer(f, X_1, ..., X_n)
, dove f è una funzione n-aria, produrrebbe un (lunghezza (X_1) * ... * lunghezza (X_n)) array la cui voce (i_1, ..., i_n) -th ha il valore f(X_1[i_1], ..., X_n[i_n])
per tutti i set di indici validi (i_1, ..., i_n). Chiaramente, per ogni i in {1, ..., n}, tutti gli elementi di X_i
in multi.outer(f, X_1,...,X_i,..., X_n)
devono essere argomenti i-es ammissibili per la funzione f
. Per il caso n = 2, multi.outer
farebbe la stessa cosa di outer
, anche se avrebbe una firma diversa (IOW, multi.outer(f, X, Y)
equivale a outer(X, Y, f)
).
È importante notare che, sebbene gli argomenti X_1, ..., X_n di multi.outer
siano tutti vettori, non necessariamente hanno tutti la stessa modalità. Per esempio. X_1 e X_2 potrebbero essere c(1, 2, 3)
e LETTERS[10:20]
, rispettivamente.
Grazie!
Bello! Vedi una domanda simile (ma non altrettanto complessa) con una risposta simile qui: http: // stackoverflow.com/domande/5233308/IS-ci-a-r-funzione-che-vale-a-function-a-ogni-pair-of-colonne/5.233.713 5.233.713 # – Aaron