Определение параметров функции R по умолчанию для обработанных аргументов - PullRequest
0 голосов
/ 12 апреля 2019

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

myfunc <- function(x, y, n=NULL){
  processed <- some_other_func(x,y)
  x <- processed$x
  y <- processed$y
  if(is.null(n)){
    n <- length(intersect(x,y))/3
  }
  # do stuff
}

Но в идеале я бы хотел, чтобы вместо NULL было помещено выражение по умолчанию, потому что оно кажется непоследовательным, если в моем документе сказано, что по умолчанию length(intersect(x,y))/3.

Знаете ли вы, как я мог бы указать параметр по умолчанию, чтобы быть более понятным?

1 Ответ

0 голосов
/ 12 апреля 2019

Может быть, вы могли бы решить это как-то так?

default_function <- function(v1, v2)
{
  return((v1 + v2)/2)
}

dummy_function <- function(x, y, n = default_function)
{
  x = x
  y = y
  if(class(n) == "function") n = n(x,y) # if n is any kind of function do it

  print(paste(x, y, n))

}


dummy_function(1, 2)
dummy_function(1, 2, 100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...