Передача необязательных аргументов функции в r - PullRequest
0 голосов
/ 12 октября 2018

Как передать необязательные аргументы функции в R?
Примером этого может быть создание функции из определенной комбинации гиперпараметров для модели.Однако я не хочу настраивать ВСЕ гиперпараметры, так как многие из них не имеют отношения к большинству сценариев.

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

library(gbm)
library(ggplot)
data('diamonds', package = 'ggplot2')

 example_function = function(n.trees = 5){
      model=gbm(formula = price~ ., n.trees = 5, data = diamonds)
}  


# example of me passing in an unplanned arguement
example_function(n.trees = 5, shrinkage = 0.02)

Возможно ли это сделать разумно?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Использование точечной записи:

sample<-function(default = 5, ...){
                 print(paste(default, ... ))
                 }
> sample(5)
[1] "5"
> sample(10, other = 5)
[1] "10 5"
0 голосов
/ 12 октября 2018

Вы можете использовать аргумент ... (задокументированный в ?dots) для передачи аргументов из вызывающей функции.В вашем случае попробуйте это:

library(gbm)
library(ggplot2)
data('diamonds', package = 'ggplot2')

example_function <- function(n.trees = 5, ...){
     gbm(formula = price~ ., n.trees = 5, data = diamonds, ...)
}  


# Pass in the additional 'shrinkage' argument 
example_function(n.trees = 5, shrinkage = 0.02)
## Distribution not specified, assuming gaussian 
## gbm(formula = price ~ ., data = diamonds, n.trees = 5, shrinkage = 0.02)
## A gradient boosted model with gaussian loss function.
## 5 iterations were performed.
There were 9 predictors of which 2 had non-zero influence.
...