Использование функции external() с многопараметрической функцией - программирование

Использование функции external() с многопараметрической функцией

Предположим, что у вас есть функция f<- function(x,y,z) { ... }. Как бы вы пошли, передавая константу одному аргументу, но позволяя другим меняться? Другими словами, я хотел бы сделать что-то вроде этого:

 output <- outer(x,y,f(x,y,z=2)) 

Этот код не оценивает, но есть ли способ сделать это?

4b9b3361

Ответ 1

outer(x, y, f, z=2)

Аргументы после функции являются дополнительными аргументами к ней, см. ... в ?outer. Этот синтаксис очень распространен в R, все семейство apply работает одинаково, например.

Update:

Я не могу точно сказать, что вы хотите выполнить в своем последующем вопросе, но подумайте, что решение этой формы, вероятно, вам следует использовать.

outer(sigma_int, theta_int, function(s,t)
    dmvnorm(y, rep(0, n), y_mat(n, lambda, t, s)))

Это вычисляет матрицу дисперсии для каждой комбинации значений в sigma_int и theta_int, использует эту матрицу для определения долготы и оценивает ее в точках (точках), определенных в y. Я не смог его протестировать, так как не знаю типов и размеров переменных.

Ответ 2

outer (наряду с применяемым семейством функций и другими) передаст дополнительные аргументы в функции, которые они назовут. Однако, если вы имеете дело с случаем, когда это не поддерживается (optim является одним из примеров), вы можете использовать более общий подход к каррированию. Для создания функции необходимо создать новую функцию, которая имеет (некоторые из) фиксированных переменных и, следовательно, имеет меньше параметров.

library("functional")
output <- outer(x,y,Curry(f,z=2))