В 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 == "")