2013-03-27 11 views
24

के भीतर पुनरारंभ करें मैं system2() का उपयोग कर आर के भीतर से एक साधारण पायथन लिपि को कॉल करने का प्रयास कर रहा हूं। मैंने कुछ जानकारी पढ़ी है जो मुझे अस्पष्ट पाया गया है कि अगर 'बहुत ज्यादा' स्मृति का उपयोग किया जाता है, तो यह काम नहीं करेगा।Rstudio

यदि मैं एक बड़ा डेटासेट लोड करता हूं और सिस्टम 2() में जाने के लिए तर्क के रूप में उपयोग करने के लिए इसमें कुछ जानकारी का उपयोग करता हूं, तो यह केवल तभी काम करेगा जब मैं मैन्युअल रूप से कॉल Rstudio में "पुनरारंभ करें" पर क्लिक करता हूं।

मुझे क्या करना चाहते हैं:

df <- read.csv('some_large_file.csv') 
###extracting some info called 'args_vec' 
for(arg in args_vec){ 
    system2('python', args) 
} 

यह वह जगह है के रूप में काम नहीं करेगा। लूप के लिए बस पारित किया गया है।

मैं क्या जरूरत है:

df <- read.csv('some_large_file.csv') 
###extracting some info called 'args_vec' 
###something that 'restarts' R 
for(arg in args_vec){ 
    system2('python', args) 
} 

This answer काफी मैं क्या चाहते हैं नहीं मिलता है। अर्थात्, यह मेरे लिए Rstudio के भीतर काम नहीं करता है और यह "सिस्टम" कहता है (जो इस मामले में "system2" के समान समस्या प्रस्तुत करता है)। असल में, जब मैंने अपने Rprofile.site फ़ाइल में ऊपर उल्लिखित उत्तर दिया, तो यह तुरंत बंद हो गया:

मैंने सुझाव दिया कि सामान्य कार्य के रूप में सुझाव ("makeActive बाइंडिंग" का उपयोग करने के बजाय, और यह काफी काम नहीं करता ।

##restart R in r session -- doesn't work 
makeActiveBinding("refresh", function() { system("R --save"); q("no") }, .GlobalEnv) 

##nor did this: 
refresh <- function() { system("R --save"); q("no") } 

मैं ऊपर इन दो विकल्पों के रूपांतरों के एक नंबर की कोशिश की है, लेकिन इस समय क्या एक सरल प्रश्न की तरह लगता है के लिए हो रही है। वहाँ एक बहुत मैं अभी तक स्टार्टअप प्रक्रिया के बारे में समझ में नहीं आता और "makeActiveBinding" है थोड़ा रहस्यमय है। क्या कोई मुझे सही दिशा में इंगित कर सकता है?

+0

क्या आप वाकई पूरे आर को पुनरारंभ करने की ज़रूरत है? यदि आप 'rm (list = ls()) का उपयोग करते हैं, जो वर्कस्पेस को साफ़ करता है, और शायद 'gc()' के साथ मैन्युअल कचरा संग्रह, तो यह पर्याप्त होना चाहिए? –

+0

@BenHunter यह तुरंत RStudio बंद कर रहा है क्योंकि आप पुनरारंभ करने के बाद 'q' को कॉल कर रहे हैं। कॉल को 'q' पर ले जाएं और इसे बिल्कुल वही करना चाहिए जैसे RStudio में पुनरारंभ आर का चयन करना। –

+0

@ हेमो, मुझे पता है कि यह एक विकल्प है, और इस मामले में यह एक अच्छा विकल्प हो सकता है, लेकिन मैं वास्तव में यह जानना चाहता हूं कि इसे कैसे हल किया जाए, जैसा कि, मेरे वर्कस्पेस को खोए बिना (या सहेजना, निकालना, और फिर पुनः लोड करना यह)। –

उत्तर

0

क्या आपने टी के भीतर फ़ंक्शन कॉल एम्बेड करने का प्रयास किया है वह लूप के बजाए फ़ंक्शन लागू करता है?

मेरे पास कोड के कुछ टुकड़े हैं जो सिस्टम के साथ पूरी तरह लागू होने के लिए लूप रन में स्मृति से बाहर निकलते हैं। यह मदद कर सकता है?

39

Rstudio में, आप द्वारा आर सत्र को पुनः आरंभ कर सकते हैं:

command/ctrl + shift + F10 

तुम भी उपयोग कर सकते हैं:

.rs.restartR() 
+1

यह सवाल का जवाब नहीं देता है क्योंकि ऐसा लगता है कि वे कमांड लाइन – Arthur

5

RStudio इस गैर-दस्तावेजी rs.restartR() जो सिर्फ इतना है कि ऐसा करने के लिए माना जाता है है: पुन: प्रारंभ आर

हालांकि, यह लोड किए गए पैकेज को अनलोड नहीं करता है, न ही यह पर्यावरण को साफ करता है, ताकि मुझे कुछ संदेह हो कि यह आर को फिर से शुरू करता है या नहीं।

+0

चाहते हैं, यह जो भी मेमोरी का उपयोग किया जाता है उसे मुक्त कर देता है और बाद में इसे जारी किया गया था ... इसलिए यह कुछ करता है (कुछ मामलों में बहुत उपयोगी)। –