В R, как использовать «нулевое» значение по умолчанию для аргумента функции? - PullRequest
10 голосов
/ 02 июля 2011

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

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 ]

18 голосов
/ 02 июля 2011

попробуй

my.function <- function( my.arg=NULL ){
 if(is.null(my.arg)) ...
11 голосов
/ 02 июля 2011

Там также missing:

my.function <- function(my.arg) {
  if(missing(my.arg)) ...
3 голосов
/ 02 июля 2011

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

if (length(my.arg) == 1 && my.arg == "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...