2011-07-01 32 views
9

İşte şu anki kodum:R'de, bir işlev argümanı için "null" varsayılan değeri nasıl kullanılır?

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

Beni şöyle döndürür:

> 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() veya my.arg=0 ile denedim, ancak her zaman bir uyarı veya hata alıyorum. Ve R kılavuzu bu konuda fazla bir şey söylemiyor.

Herhangi bir fikrin var mı? Şimdiden teşekkürler!

+0

gibi yapmanız gereken ediyorum "" olduğunu ve bunu bir dağıtım ve uygun parametreleri geçemiyor eğer ?, istediğiniz rnorm (10) 'ın ortalamasını döndürmek? – Chase

+0

@ Evet, ama bu sadece bir kukla örnek, benim "gerçek" işlevim daha karmaşık ... Karsten'in çözümü çalışıyor. – tflutre

+0

'my.function (NA)' dan ne beklerdiniz? – Henry

cevap

15

da missing var

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

deneyin:

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

Karsten en yaklaşımı doğrudur. Uyarının sebebi, my.arg 'ı 1' lik bir karakter vektörü olan "" a karşı test etmenizdir, bu yüzden my.arg,> 1'lik bir uzunluk vektörü olduğunda uyarıdır. Eğer gerçekten benim .arg böylece keyfi bir dağılımın ortalama değeri döndürmek istediğiniz bir şey

if (length(my.arg) == 1 && my.arg == "") 
İlgili konular