В R, как использовать "нулевое" значение по умолчанию для аргумента функции?

Вот мой текущий код:

my.function <- function( my.arg="" ){
  if(my.arg == "")
    my.arg <- rnorm(10)
  return( mean(my.arg) )
}

Это возвращает мне это:

> my.function( rbinom(10, 100, 0.2) )
[1] 18.5
Warning message:
In if (a == "") a <- rnorm(10) :
  the condition has length > 1 and only the first element will be used

Я пробовал с my.arg=c(), или же my.arg=0, но я всегда получаю либо предупреждение, либо ошибку. И руководство R не говорит много по этому вопросу.

Любая идея? Заранее спасибо!

3 ответа

Решение

Пытаться

my.function <- function( my.arg=NULL ){
 if(is.null(my.arg)) ...

Есть также missing:

my.function <- function(my.arg) {
  if(missing(my.arg)) ...

Подход Карстена правильный. Причина предупреждения заключается в том, что вы проверяете my.arg против "", который является символьным вектором длины 1, таким образом, предупреждение, когда my.arg является вектором длины> 1. Если вы действительно хотите проверить, является ли my. Аргумент "" вам нужно сделать что-то вроде

if (length(my.arg) == 1 && my.arg == "")
Другие вопросы по тегам