Speficy параметры функции, являющейся аргументом другой функции в R - PullRequest
2 голосов
/ 01 октября 2019

Заголовок в основном говорит сам за себя.

Я хотел бы передать функцию другому аргументу, но мне нужно указать параметр функции, который я использую в качестве ввода, например, здесь 0.5:

function1(function2(x, parameter = 0.5))

как мне это сделать в R?

1 Ответ

3 голосов
/ 01 октября 2019

Вот несколько альтернатив:

1) определить анонимную функцию

# test data
fun2 <- function(x, y) x + y
fun1 <- function(fun, x) fun(x)

fun1(function(x) fun2(x, y = 2), 1)
## [1] 3

2) частичное в пакете purrr

library(purrr)

fun1(partial(fun2, y = 2), 1)
## [1] 3

3) Карри в функциональном пакете

library(functional)

fun1(Curry(fun2, y = 2), 1)
## [1] 3

4)% <% в пакете карри </strong>

Этот пакет определяет%<% оператор для выполнения каррирования:

library(curry)
library(magrittr)

fun2 %<% 2 %>% fun1(1)
## [1] 3

5) пакет по умолчанию Этот пакет позволяет установить аргументы функции по умолчанию.

library(default)

default(fun2) <- list(y = 2)
fun1(fun2, 1)
## [1] 3

fun2 <- reset_default(fun2)

6) точки В некоторых случаях функция, которой передается другая функция, имеет аргумент ..., который может предоставлять аргументы переданной функции. Например, здесь мы передаем a=1 в obj через аргумент точек optimize.

obj <- function(x, a) (x - a)^2
optimize(obj, c(0, 10), a = 1)
## $minimum
## [1] 1
##
## $objective
## [1] 4.437343e-31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...