क्या कोई ऐसा तरीका है जिससे मैं R के भीतर एक उपनाम बना सकता हूं, जो निष्पादित करेगा q()
और फिर स्वच्छ R सत्र को फिर से शुरू करेगा ?
और हाँ, मैं टाइप करने के लिए बहुत आलसी हूँ q()
और फिर पत्र R
:)
क्या कोई ऐसा तरीका है जिससे मैं R के भीतर एक उपनाम बना सकता हूं, जो निष्पादित करेगा q()
और फिर स्वच्छ R सत्र को फिर से शुरू करेगा ?
और हाँ, मैं टाइप करने के लिए बहुत आलसी हूँ q()
और फिर पत्र R
:)
save
पैरामीटर जोड़ना होगा q()
, जैसे कि "r"
, कार्यक्षेत्र को बचाने के बिना आर को पुनरारंभ करता है। तब के लिए एक उपनाम q("r")
को एक नए फ़ंक्शन को सौंपा जा सकता है जो आर। को पुनः आरंभ करता है
जवाबों:
यदि आप RStudio में हैं: कमांड / ctrl + shift + F10
आप भी उपयोग कर सकते हैं
.rs.restartR()
.rs.restartR()
मेरी मशीन पर इन चीजों को करने के लिए प्रतीत नहीं होता है ..
आर शुरू करने के आधार पर आप इनमें से एक लाइन को अपनी .Rprofile
फ़ाइल में रखने का प्रयास करते हैं:
makeActiveBinding("refresh", function() { shell("Rgui"); q("no") }, .GlobalEnv)
makeActiveBinding("refresh", function() { system("R"); q("no") }, .GlobalEnv)
फिर इसे आर कंसोल में दर्ज करें:
refresh
वर्तमान सत्र को बंद कर देगा और एक नई शुरुआत करेगा।
.Last <- function() system("R")
बाद में भी बंद चक्र में reg.finalizer(.GlobalEnv, function(e) system("R"), TRUE)
। फिर q()
वापस आता रहता है।
मैंने पाया कि .rs.restartR () ctrl + shift + F10 दबाने के समान काम करता है। लेकिन खुराक पैकेज को अनलोड नहीं करते हैं
getAnywhere(".rs.restartR")
प्रतीत होता है tools:rstudio
। मेरे पास शुद्ध आर सत्र में पहुंचने का कोई सौभाग्य नहीं है।
.rs.restartR()
पैकेजों को लोड नहीं करता है, इसलिए यह बिल्कुल वैसा ही नहीं हैctrl+shift+f10
पुरानी पोस्ट, लेकिन जवाबों में से कोई भी काफी काम नहीं करता है (मेरे लिए, मैं विंडोज का उपयोग कर रहा हूं, दूसरों का परीक्षण नहीं किया है), इसलिए मैं अपना समाधान जोड़ूंगा। मेरी कुछ शब्दावली यहां बंद हो सकती है, लेकिन इस बिंदु को पार करना चाहिए:
उपरोक्त उत्तर काफी काम नहीं करते
यहां प्रस्तुत अधिकांश उत्तरों में शामिल हैं shell
या system
जो काफी काम नहीं करते हैं क्योंकि वे एक नया आर कंसोल खोलते हैं और मूल कंसोल को बंद करने का निर्देश देते हैं, नया कंसोल पुराने कंसोल के एप्लिकेशन संदर्भ में चलने वाली एक प्रक्रिया है। इसका मतलब है कि नया कंसोल बंद होने तक मूल कंसोल बंद नहीं हो सकता। ऊपर के कुछ उपयोगकर्ताओं जैसे कि हेजेंडेंडलेवर ने बताया कि मूल कंसोल को बंद करने से नया कंसोल बंद होने के लिए बाध्य होता है। जब मैं कोशिश करता हूं, तो नया कंसोल खुलता है, लेकिन नया कंसोल बंद होने तक पुराना कंसोल स्थिर अवस्था में खुला रहता है।
मूल समस्या कॉल shell
कर रही है या system
एप्लिकेशन कंसोल को मूल कंसोल से नए में परिवर्तित नहीं करती है, और इसलिए नया कंसोल बंद होने तक मूल प्रक्रिया समाप्त नहीं हो सकती है।
वैकल्पिक जो मेरे लिए काम करता है
इसके बजाय shell.exec
जो आमतौर पर फ़ाइल प्रकार के आधार पर डिफ़ॉल्ट अनुप्रयोग में एक फ़ाइल को खोलने के लिए इस्तेमाल किया जाएगा। जब .exe पर उपयोग किया जाता है, तो जाहिर है, यह निष्पादन योग्य है। हालांकि, महत्वपूर्ण अंतर यह है कि यह प्रणाली अपने अलग संदर्भ में अनुप्रयोग शुरू करती है। तो यहाँ कोड है कि मेरे लिए काम करता है:
makeActiveBinding("restart.R", function() { shell.exec(paste0(R.home(),"/bin/x64/Rgui.exe")); q("no") }, .GlobalEnv)
/bin/x64/Rgui.exe
आर शुरू करने के लिए जो भी आप उपयोग करते हैं, उससे मेल करने के लिए आपको फ़ाइल पथ को संपादित करना होगा। आपने इस लाइन को अपनी .Rprofile
फ़ाइल में डाल दिया है , फिर आप इसे restart.R
अपने आर कोड में दर्ज करके कॉल कर सकते हैं ।
अन्य तरीकों पर इस बात का नकारात्मक पक्ष यह है कि आप कमांड लाइन के तर्कों को पास नहीं कर सकते हैं जैसे --no-save
कि आप बस करेंगे shell
, लेकिन कम से कम यह आपको मूल आर प्रक्रिया को बंद करने देगा।
इस के लिए एक समाधान के लिए देखने के बाद, मैं इस समाधान के आधार पर मेरी समस्या हल यहाँ , आर पैकेज का उपयोग कर RDCOMClient ।
समाधान bellow सिर्फ RStudio (विंडोज) के भीतर काम करता है, एक बार जब यह keypresses ctrl + shift + F10 का अनुकरण करता है ।
RDCOMClient पैकेज को कमांड बॉक्स के साथ स्थापित किया जाना चाहिए:
install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")
RStudio (विंडोज 10) के भीतर कुंजीपटों को अनुकरण करने के लिए कोड हैं:
library(RDCOMClient)
wsh <- COMCreate("Wscript.Shell")
wsh$SendKeys("^+{F10}")
ऊपर दिए गए कोड में अंतिम पंक्ति में, 'ctrl' कुंजी को '^' द्वारा और शिफ्ट कुंजी को '+' द्वारा दर्शाया गया है। इस प्रमुख अभ्यावेदन के लिए सभी स्पष्टीकरण यहां उपलब्ध हैं ।
ऊपर दिए गए कोड की अंतिम पंक्ति को चलाने के बाद, @steadyfish की टिप्पणी के अनुसार, RStudio में पूरा R सत्र रीसेट हो जाएगा । यही है, यह वर्तमान सत्र से सभी डेटा को निकालता है और सत्र में सभी लोड किए गए पैकेज को अनलोड करता है।
इस फ़ंक्शन को अपने .Rprofile में लिखें
r <- function() {
assign('.Last', function() {system('R')}, envir = globalenv())
quit(save = 'no')
}
r()
आप आर सत्र को पुनरारंभ करता है। लोड किए गए पैकेज पुनः लोड नहीं होंगे। आपके पर्यावरण को बचाया नहीं जाएगा।
लिनक्स के लिए काम करता है। अन्य OS पर क्या हो सकता है इसका कोई अंदाजा नहीं है
मुझे खिड़कियों पर समान ताज़ा सत्र कार्यक्षमता की आवश्यकता थी और मैं कोड के थोड़ा संशोधित संस्करण के साथ समाप्त हुआ:
makeActiveBinding("refresh", function() { shell(paste0("start \"\" \"", R.home(), "/bin/x64/Rgui.exe\"")); q("no") }, .GlobalEnv)
खिड़कियों पर आपको संशोधित करने की आवश्यकता है Rprofile.site
फ़ाइल । यह R की etc
डायरेक्टरी के अंतर्गत है । पथ के अंतिम भाग bin/x64
को अपने सिस्टम कॉन्फ़िगरेशन के अनुसार बदल सकते हैं। मुझे उम्मीद है कि इससे दूसरों को भी मदद मिलेगी।
मार्टिन मॉर्गन के उपयोग के विचार के अनुरूप .Last()
; यह पहले से कहे गए कमांड-लाइन विकल्पों के सेट के साथ R को पुनरारंभ करता है:
restart_r <- function(status = 0, debug = TRUE) {
if (debug) message("restart_r(): Customizing .Last() to relaunch R ...")
assign(".Last", function() {
args <- commandArgs()
system2(args[1], args = args[-1])
}, envir = globalenv())
if (debug) message("restart_r(): Quitting current R session and starting a new one ...")
quit(save = "no", status = status, runLast = TRUE)
}
मुझे लगता है, एक विकल्प में एक वर्तमान काम कर निर्देशिका की स्थापना के द्वारा आर का सबसे अच्छा उपयोग का एहसास है। फिर जब भी आपका कार्यक्षेत्र / सत्र फ़ाइल आपको दिखाना शुरू कर देती है या उसमें आपका काफी काम होता है (परियोजनाओं के बीच में) तो आप R और R / Rstudio को बंद करने के बाद कार्यशील निर्देशिका में इस डिफ़ॉल्ट सत्र फ़ाइल का नाम बदल सकते हैं। कार्यक्षेत्र / सत्र फ़ाइल, आपके वर्तमान कार्य को परेशान किए बिना।
R को छोड़ना और वर्तमान सत्र फ़ाइल का नाम बदलना याद रखें
बेशक, यदि आप वर्तमान कार्य को सहेजना नहीं चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि आप उन वस्तुओं को रीसेट करें या उन पर परिचालन मूल वस्तुओं से कॉपी करने के बाद किया गया था, इसलिए वे इस प्रकार हैं। मेरा विश्वास करो, यह जानकर कि आप हमेशा पुराने कार्यक्षेत्रों को लोड कर सकते हैं एक प्रलोभन है लेकिन नहीं की तुलना में अधिक उपयोगी है।
संक्षेप में R छोड़ दें, तो यह आपको कुछ अंतराल देता है जबकि छोड़ने का मतलब है कि यह कार्यक्षेत्र भरा हुआ है, इसे पूरा करने के बाद नाम बदलें और एक नए कार्यक्षेत्र के साथ R / Rstudio को पुनः आरंभ करें। आप हमेशा नए कार्यक्षेत्र में चुनिंदा वस्तुओं को लोड कर सकते हैं। आदर्श रूप से सभी महत्वपूर्ण कार्य प्रोजेक्ट निर्देशिकाओं में होने चाहिए, लेकिन फिर भी आपको कई बार वापस जाने के लिए अपनी नौकरियों के इतिहास की आवश्यकता होती है और सहेजे गए सत्र उपयोगी बिंदुओं पर आते हैं जब आप लंबी परियोजनाओं पर होते हैं। अगर आपको इसमें से किसी की जरूरत नहीं हैrm(list=ls())
इसके अलावा, मुझे RDComClient
@Eduardo Alvin के विचार पसंद हैं लेकिन इसे बंद कर दिया गया है।
वैकल्पिक विकल्प
अपने कार्यक्षेत्र के अंदर किसी भी समय सामान से छुटकारा पाने का एक सरल विकल्प उपयोग करना है save.image
save.image("Rstreamingscience.data")
quit(save='no')
load("Rstreamingscience.data") ##G:/ADA registers##
save.image("Rstreamingscience.data")
यह आपको कृपया आने और जाने के लिए स्वतंत्र छोड़ देता है और जितनी आवश्यकता हो उतने कार्यस्थान खोलें ।
makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv)
या के साथ - save या - नहीं-सहेजें
paste0(R.home(),"/bin/i386/R --no-save")
मुझे लगता है कि आपको रिफ्रेश कॉल करने से पहले यदि आपने सेटवेड () का उपयोग किया है, तो इसकी आवश्यकता है (हालांकि न तो यह और न ही मूल संस्करण मेरे लिए काम करता है, क्योंकि यह आर को पुनरारंभ करता है फिर खुद को बंद कर देता है, एक नई विंडो कभी नहीं खुलती है। यदि कोई भी टिप्पणी कर सकता है। यह, कृपया ऐसा करें)
मैंने निम्नलिखित फ़ंक्शन लिखा है। याद है! आप इसे केवल एक बार उपयोग कर सकते हैं, फिर आर सत्र के पुनरारंभ होने के बाद आपको इसे फिर से लोड करना होगा।
clc <- function() {
rm(list = ls(envir = globalenv()),envir = globalenv()) #clear Vars from global enviroment
gc() #grabage colector
cat("\014") #clc
.rs.restartR() #clear session
}
कभी-कभी किसी पैकेज को अलग करने से भी मदद मिलती है।
rm(list=ls())
लेकिन ऐसा नहीं है कि आपका क्या मतलब है?