आर

2012-05-19 7 views
24

में हालत वापस संख्यात्मक (0) का परीक्षण कैसे करें, मान लें कि आप setdiff(input, 1:9) की स्थिति के आधार पर एक साधारण परीक्षण बनाना चाहते हैं।आर

मैं एक

if isnotempty(setdiff(input, 1:9)) stop ("not valid") 

बयान जो निष्पादन बंद हो जाता है जब इनपुट c(3, 12) है, लेकिन जारी है जब इनपुट c(2,5,7) कहना है निर्माण कर सकते हैं? बहुत धन्यवाद, बर्टी

+1

यह जांचना कि क्या 'इनपुट' संख्यात्मक है, यहां भी अच्छा होगा। इसे +1 करने के लिए @TylerRinker को +1 करें :) – daroczig

उत्तर

31

आप ?length इस्तेमाल कर सकते हैं:

isEmpty <- function(x) { 
    return(length(x)==0) 
} 

input <- c(3, 12); 

if (!isEmpty(setdiff(input, 1:9))) { 
    stop ("not valid") 
} 
+1

धन्यवाद, मुझे अपने लॉटरी जनरेटर के अंतिम छोर के लिए इसकी आवश्यकता थी;) बर्टी। – Bertie

11

यहाँ एक और विकल्प identical(x, numeric(0)) है। यहाँ एक उदाहरण है (मूल रूप से sgibb से सब कुछ ले लिया और कुंजी पंक्ति के रूप में मैं आलसी हूँ प्रतिस्थापित):

isEmpty <- function(x) { 
    return(identical(x, numeric(0))) 
} 

input <- c(3, 12) 

if (!isEmpty(setdiff(input, 1:9))) { 
    stop ("not valid") 
} 
0

यह आपके विषय पंक्ति में इस सवाल का जवाब नहीं है, लेकिन मुझे लगता है कि तुम क्या के लिए एक बेहतर तरीका है प्राप्त करने की कोशिश कर रहे हैं:

if(!all(input %in% 1:9)) stop("not valid")