Стандартное выражение R external (X, Y, f)
вычисляет матрицу, у которой (i, j) -я запись имеет значение f (X [i], Y [j])
.
Я хотел бы реализовать функцию multi.outer
, n-мерное обобщение of external
: multi.outer (f, X_1, ..., X_n)
, где f - некоторая n-арная функция, создаст массив (length (X_1) * ... * length (X_n)), чья (i_1, ..., i_n) -я запись имеет значение f (X_1 [i_1], ..., X_n [i_n])
для всех допустимых наборов индексов (i_1, ..., i_n). Ясно, что для каждого i в {1, ..., n} все элементы X_i
в multi.outer (f, X_1, ..., X_i, ..., X_n )
должен быть допустимый i-й аргумент для функции f
. Для случая n = 2 multi.outer
будет делать то же самое, что и external
, хотя у него будет другая сигнатура (IOW, multi.outer (f, X , Y)
будет эквивалентно external (X, Y, f)
).
Важно отметить, что, хотя аргументы X_1, ..., X_n из multi.outer
- все векторы, они не обязательно имеют одинаковый режим. Например X_1 и X_2 могут быть c (1, 2, 3)
и ПИСЬМА [10:20]
соответственно.
Спасибо!