Standardowe wyrażenie R outer(X, Y, f)
oznacza macierz, której pozycja (i, j) ma wartość f(X[i], Y[j])
.Jak generalizować zewnętrzne do n wymiary?
ja do zaimplementowania funkcji multi.outer
, n-wymiarowej uogólnienie outer
: multi.outer(f, X_1, ..., X_n)
, w którym część f jest funkcją N-ary, by wytworzyć (długość (X_1) * ... * długość (X_n)) array, której (i_1, ..., i_n) -th pozycja ma wartość f(X_1[i_1], ..., X_n[i_n])
dla wszystkich poprawnych zestawów indeksów (i_1, ..., i_n). Oczywiście, dla każdego i w {1, ..., n}, wszystkie elementy X_i
w multi.outer(f, X_1,...,X_i,..., X_n)
muszą być dopuszczalnymi i-tymi argumentami dla funkcji f
. W przypadku n = 2, multi.outer
zrobiłoby to samo co outer
, chociaż miałby inną sygnaturę (IOW, multi.outer(f, X, Y)
byłaby odpowiednikiem outer(X, Y, f)
).
Należy zauważyć, że chociaż argumenty X_1, ..., X_n z multi.outer
są wektorem, to niekoniecznie wszystkie mają ten sam tryb. Na przykład. X_1 i X_2 mogą być odpowiednio c(1, 2, 3)
i LETTERS[10:20]
.
Dzięki!
Nice! Zobacz podobne (ale nie tak skomplikowane) pytanie z podobną odpowiedzią tutaj: http: // stackoverflow.com/questions/5233308/is-there-a-r-function-to-apply-a-function-to-each-pair-of-columns/5233713 # 5233713 – Aaron