2012-07-03 21 views
9

मैं निम्न कार्य करने की कोशिश कर रहा हूँ:मैं कैसे निर्धारित कर सकता हूं कि कोई त्रुटि लौटाई गई है या नहीं?

try(htmlParse(ip[1], T),

जहां मैं एक के रूप में परिभाषित करते हैं:

ip[1] = paste('http://en.wikipedia.org/wiki/George_Clooney') 

मैं अगर htmlParse काम किया है या नहीं की जाँच करना चाहते हैं। मेरी सूची में कई नामों के लिए, कोई विकिपीडिया साइट नहीं होगी और इस प्रकार विकी पेज मौजूद नहीं होने पर मुझे एनए के साथ आईपी [1] की जांच और प्रतिस्थापित करने में सक्षम होना चाहिए।

क्या कोई सलाह दे सकता है कि मैं यह कैसे कर सकता हूं। मैंने geterrmessage() कमांड का उपयोग करने का प्रयास किया, हालांकि मुझे यकीन नहीं है कि हर बार जब मैं सेलिब्रिटी का नाम बदलता हूं तो फ्लश कैसे करें।

वर्तमान में मैं निम्नलिखित है:

if(!isTRUE(as.logical(grep(ip[1],err)))) { 
    ip[1] = NA 
    } 
    else { 

यह निश्चित रूप से सही नहीं है के रूप में यह तर्कसंगत कथन मैं चाहता हूँ नहीं चल रहा है।

धन्यवाद

अमर

उत्तर

21

यह सरल उदाहरण आप बाहर की मदद करनी चाहिए, मुझे लगता है:

res <- try(log("a"),silent = TRUE) 
class(res) == "try-error" 
[1] TRUE 

मूल विचार try रिटर्न (अदृश्य) वर्ग की एक वस्तु है "ट्राई-त्रुटि "जब कोई त्रुटि होती है। अन्यथा, res में अभिव्यक्ति का परिणाम होगा जिसमें आप try पर जाते हैं। अर्थात

res <- try(log(2),silent = TRUE) 
res 
[1] 0.6931472 

?try ध्यान से पढ़ने के लिए कुछ समय (है, जो के रूप में सरल वे हो सकता है के रूप में नहीं कर रहे हैं मुझे लगता है) उदाहरण भी शामिल है। जैसा कि जीएसई नीचे नोट करता है, एक त्रुटि को फेंकने के लिए एक और मूर्ख तरीका है inherits(res,'try-error') का उपयोग करना।

+6

मैं उपयोग 'inherits (रेस, 'कोशिश-त्रुटि')' यदि 'tryCatch' – GSee

+0

@GSee धन्यवाद का उपयोग नहीं , हाँ, यह निश्चित रूप से बेहतर है। – joran

0

मैं विकी से सभी नाम (मौजूदा या नहीं) को डाउनलोड करने और इसे अलग-अलग फ़ाइलों में सहेजने का प्रयास करूंगा। मैं फिर निम्नलिखित स्ट्रिंग grep करूँगा विकिपीडिया में इस सटीक नाम के साथ कोई लेख नहीं है और गैर- मौजूदा लोगों को मुझे एक वास्तविक मूल्य मिलेगा। इस तरह मेरा मानना ​​है कि आप सुनिश्चित करेंगे कि पार्सर काम करता है या नाम मौजूद नहीं है। इसके अतिरिक्त यदि आप संदेह कर रहे हैं कि कुछ गलत हो गया है तो आप डाउनलोड की गई फ़ाइलों को उनके आकार के आधार पर सॉर्ट कर सकते हैं। दूषित लोगों का आकार छोटा है।

Wikipedia article for a fictitious person इसके अतिरिक्त मैं तार्किक स्थिति के इलाज के लिए आदेश में tryCatch समारोह का प्रयोग करेंगे:

x<-3 
tryCatch(x>5,error=print("this is an error")) 
संबंधित मुद्दे

 संबंधित मुद्दे