Как обобщить внешние до n измерений?

Стандартное выражение 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] соответственно.

Спасибо!

8
задан kjo 31 May 2011 в 20:31
поделиться