Стандартное выражение R outer(X, Y, f)
оценивает матрицу, чья (i, j) -я запись имеет значение f(X[i], Y[j])
.Как обобщить внешние размеры?
Я хотел бы реализовать функцию multi.outer
, п-мерное обобщение outer
: multi.outer(f, X_1, ..., X_n)
, где е некоторая п-арной функции, будет производить (длина (x_1) * ... * длина (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
будет делать то же самое, что и outer
, хотя у него будет другая подпись (IOW, multi.outer(f, X, Y)
будет эквивалентно outer(X, Y, f)
).
Важно отметить, что хотя аргументы X_1, ..., X_n из multi.outer
- все векторы, они не обязательно имеют одинаковый режим. Например. X_1 и X_2 могут быть c(1, 2, 3)
и LETTERS[10:20]
, соответственно.
Спасибо!
Ницца! См. Аналогичный (но не такой сложный) вопрос с похожим ответом здесь: http: // stackoverflow.ком/вопросы/5233308/IS-есть-а-р-функцию-что-относится-а-функция-на-каждый-пара-из-столбцов/5233713 # 5233713 – Aaron