2009-09-15 14 views
8

मैं सोच रहा था कि क्या कोई व्यक्ति आर या ईएसएस को उस बिंदु से परे शेष कोड को निष्पादित करना बंद करने का एक अच्छा तरीका जानता है जिस पर एक क्षेत्र या बफर (I केवल सहायता अभिलेखागार में विपरीत अनुरोध मिला है)। मैं आर सहायता फाइलों में देख रहा था लेकिन option(error=stop) केवल अपमानजनक फ़ंक्शन या कथन का निष्पादन रोक देगा, लेकिन जो लोग इसका अनुसरण नहीं करेंगे। धन्यवाद!बल रोकें या त्रुटि पर रोकें

उत्तर

2

? ब्रेक

केवल आपको लूप से बाहर ले जाता है।

? कोशिश

आपको लगता है कि असफल हो सकता है और शान से उबरने के कोड की स्थापना की सुविधा देता है।

+0

धन्यवाद मिलता है, लेकिन जब सहभागी काम कर रहा लाइन या कोशिश में क्षेत्र रैप करने के लिए नहीं करना चाहते हैं() या हर बार tryCatch(), लेकिन मुझे लगता है कि तकनीकी रूप से यह होगा ... – hatmatrix

+0

हाय crippledlambda। क्या आपको इस बीच अपनी समस्या का समाधान मिला? – giordano

4

According to the ESS manual, इस काम करना चाहिए: C-c C-c (comint-बाधा-subjob) एक Control-C संकेत ईएसएस की प्रक्रिया के लिए भेजता है। इसका वर्तमान आदेश निरस्त करने का असर पड़ता है।

जॉन फॉक्स की एक वेबसाइट है जहां वह ईएसएस के लिए कॉन्फ़िगरेशन प्रदान करता है। इस रिपोर्ट में उन्होंने इस कार्य है:

(defun stop-R() 

"Interrupt R process in lower window." 

(interactive) 

(select-window win2) 

(comint-interrupt-subjob) 

(select-window win1)) 

आप का उपयोग XEmacs में मेनू के लिए इस फ़ंक्शन जोड़ने के लिए सक्षम होना चाहिए:

(defun R-menu() 

    "Hook to install R menu and sub-menus" 

    (add-menu-item '("ESS" "R") "Interrupt computation" 'stop-R 
) 
) 
(add-hook 'ess-mode-hook 'R-menu) 

आप करने के लिए अपने विन्यास फाइल और प्रलेखन के बाकी बाहर की जाँच कर सकते हैं देखें कि क्या यह आपकी रूचि रखता है। मैंने अभी तक यह कोशिश नहीं की है, लेकिन मुझे उम्मीद है कि यह आपके लिए काम करता है!

चार्ली

+0

धन्यवाद चार्ली - मैं सीसी सीसी से परिचित हूं लेकिन यह मैन्युअल रूप से है त्रुटियों के बावजूद प्रगति पर एक प्रक्रिया को रोकना (जैसा कि मैं इसे समझता हूं)। जब कोई त्रुटि होती है तो मैं इस फ़ंक्शन को कॉल करने के लिए eval-region या eval-buffer को संशोधित करने में देख सकता हूं ... – hatmatrix

11

आर/ईएसएस इतना गणना समय है कि आपके Emacs/ईएसएस के लिए सी-सी सी सी अनुत्तरदायी है ऊपर का अकेले है, तो आप भी यह टर्मिनल से एक अवरोध संकेत भेज कर बचा सकते हैं।

पहला: top या ps का उपयोग कर आर की प्रक्रिया आईडी को समझें। (मेरा तो 98,490 था: kill -2 98490 व्यवधान संकेत भेजता है कि और आप अपने ईएसएस/Emacs और आर सत्र वापस

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