2015-06-28 26 views
7

fonksiyonunu f() Verilen:Bir fonksiyonun ortamında bir değişkenin varlığını nasıl test ederim? aşağıdaki gibi

f = function(a) { 
    if(a > 0) b = 2 
    c = exists('b') 
    return(c) 
} 

nasıl exists() işlevi yalnızca fonksiyonu f içinde arama gerektiğini belirtirim? Boş ortamı ile

, ben gibi FALSE dönecektir f(-5) çağırarak, ama

b = "hello" 
f(-5) 

yaparsanız o zaman TRUE olsun. Kullanıcı, f işlevinin dışında betiklerinde başka bir yerde tanımlanan bir b olsa bile FALSE dönmek için f(-5)'u nasıl alabilirim?

Bunun, exists() parametresinin where parametresiyle bir ilgisi olduğunu tahmin ediyorum ancak bu parametre için uygun ortamın ne olduğunu anlayamıyorum. Hala kafamı tamamen etrafına dolaşmadım R ...

Teşekkürler!

cevap

10

Sadece inherits= parametresini kullanın. KKO tekrar kazanır: Aman fazla bilgi

b <- 100 
f <- function(a) { 
    if(a > 0) b <- 2 
    c <- exists('b', inherits=FALSE) 
    return(c) 
} 
f(5) 
# [1] TRUE 
f(-5) 
# [1] FALSE 
+1

için ?exists yardım sayfasına bakın! :-) –