Общие проблемы: У меня есть функция, которая принимает другую функцию в качестве аргумента, формы:R: Передайте функцию многих параметров, в качестве одного из одного параметра другой функции, установив все другие его параметры
F <- function(x, FUN){FUN(x)}
я мог легко пройти простую функцию к нему:
f1 <- function(x){plot(x, 1/x)}
F(-5:5, f1)
будет отображать график 1/х.
Предположив у меня был другой, более сложную функцию:
f2 <- function(x, a){plot(x, 1/x^a)}
f2
имеет 2 аргумента, поэтому не может быть передан непосредственно в F
. Но я мог бы сохранить гибкость в так, чтобы, не определяя множество разных функций, я могу быстро построить 1/x^a
для любого значения, которое я прихожу. Я не пробовал, для a = 2
:
F(-5:5, f2(, 2))
F(-5:5, f2(, a=2))
F(-5:5, f2(x, 2))
F(-5:5, f2(a=2))
Но ни одна из этих работ. у кого-нибудь есть решение? (Я могу установить значение по умолчанию для a
в f2
, но тогда я не смог запустить его с другим значением a
).
Конкретная контекст: У меня есть функция, которая будет найти обратное преобразование Лапласа функции, принимая функцию в качестве аргумента, который, как ожидается, иметь один аргумент (переменная Лапласа, р). Я могу инвертировать функцию, например, f1
. Но я пытаюсь инвертировать функцию транспорта загрязняющих веществ в грунтовых водах. Этот процесс зависит от множества других параметров, таких как скорость воды и пройденное расстояние. Поэтому я хотел бы иметь возможность передавать многопараметрическую функцию для инверсии Лапласа таким образом, чтобы все параметры, кроме параметра Лапласа p, были фиксированными. В конечном счете, я хотел бы сделать этот процесс много раз с разными значениями скорости и т. Д., Поэтому мне нужен жидкий способ изменения используемых «фиксированных» параметров.
Заранее спасибо за любую помощь, Кристофер
Посмотрите на '? DotsMethods' и'? Do.call'. Объединение двух должно дать вам решение. – shadow
Как насчет использования многоточия 'F <- function (x, FUN, ...) {FUN (x, ...)}; F (-5: 5, f2, a = 4) '? – lukeA
Карри - это путь. –