আর-এর মধ্যে কোনও উপকরণ তৈরি করার কোন উপায় আছে যা কার্যকর করে q()
এবং একটি পরিষ্কার আর সেশন পুনরায় আরম্ভ করবে ?
এবং হ্যাঁ, আমি q()
চিঠিটি টাইপ করতে খুব অলস এবং R
:)
আর-এর মধ্যে কোনও উপকরণ তৈরি করার কোন উপায় আছে যা কার্যকর করে q()
এবং একটি পরিষ্কার আর সেশন পুনরায় আরম্ভ করবে ?
এবং হ্যাঁ, আমি q()
চিঠিটি টাইপ করতে খুব অলস এবং R
:)
save
প্যারামিটার যুক্ত করা q()
, যেমন "r"
, ওয়ার্কস্পেসটি সংরক্ষণ না করে আর পুনরায় আরম্ভ করে। তারপরে একটি উপাধি q("r")
একটি নতুন ফাংশনে বরাদ্দ করা যেতে পারে যা আর।
উত্তর:
আপনি যদি আর স্টুডিওতে রয়েছেন: কমান্ড / সিটিআরএল + শিফট + এফ 10
আপনি ব্যবহার করতে পারেন
.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 টিপানোর মতো কাজ করে to তবে ডোজ প্যাকেজগুলি আনলোড করে না
getAnywhere(".rs.restartR")
এটি থেকে প্রদর্শিত হয় tools:rstudio
। খাঁটি আর সেশনে আমার যে কোনও ভাগ্য অ্যাক্সেস হয়নি।
.rs.restartR()
প্যাকেজগুলি আনলোড করে না, তাই এটি ঠিক যেমনটি হয় নাctrl+shift+f10
পুরানো পোস্ট, তবে উত্তরগুলির কোনওটিই বেশ কার্যকর নয় (আমার জন্য, আমি উইন্ডোজ ব্যবহার করছি, অন্যকে পরীক্ষা করিনি), তাই আমি আমার সমাধানটি যুক্ত করব। আমার কিছু পরিভাষা এখানে বন্ধ রয়েছে, তবে এটি পয়েন্টটি পাওয়া উচিত:
উপরের উত্তরগুলি যথেষ্ট কাজ করে না
এখানে জমা দেওয়া বেশিরভাগ উত্তরগুলি ব্যবহার করে shell
বা system
যা কার্যকরভাবে কার্যকর হয় না কারণ তারা একটি নতুন আর কনসোল খোলার সময় এবং মূল কনসোলটি বন্ধ করার নির্দেশ দেয়, নতুন কনসোলটি পুরানো কনসোলের অ্যাপ্লিকেশন প্রসঙ্গে চলমান একটি প্রক্রিয়া। তার মানে নতুন কনসোলটি বন্ধ না হওয়া পর্যন্ত আসল কনসোলটি বন্ধ হতে পারে না। উপরের কিছু ব্যবহারকারী যেমন হেজেডএন্ডলেভার্ড জানিয়েছেন যে মূল কনসোলটি বন্ধ করে নতুন কনসোলটি বন্ধ করতে বাধ্য করে। আমি যখন চেষ্টা করি তখন নতুন কনসোলটি খোলে, তবে নতুন কনসোলটি বন্ধ না হওয়া পর্যন্ত পুরানো কনসোলটি হিমশীতল অবস্থায় খোলা থাকে।
মূল সমস্যাটি কল করা shell
বা system
মূল কনসোল থেকে নতুনটিতে অ্যাপ্লিকেশন প্রসঙ্গটি পরিবর্তন করে না এবং নতুন কনসোলটি বন্ধ না হওয়া পর্যন্ত মূল প্রক্রিয়াটি শেষ হতে পারে না।
বিকল্প যে আমার জন্য কাজ করে
পরিবর্তে shell.exec
সাধারণত ফাইল ধরণের উপর ভিত্তি করে ডিফল্ট অ্যাপ্লিকেশনটিতে একটি ফাইল খোলার জন্য ব্যবহৃত হবে তা ব্যবহার করুন। যখন .exe এ ব্যবহার করা হয়, দৃশ্যত, এটি এক্সিকিউটেবল চালায় runs তবে গুরুত্বপূর্ণ পার্থক্যটি হ'ল সিস্টেমটি তার নিজস্ব পৃথক প্রসঙ্গে অ্যাপ্লিকেশন শুরু করে। সুতরাং এখানে কোডটি আমার পক্ষে কাজ করে:
makeActiveBinding("restart.R", function() { shell.exec(paste0(R.home(),"/bin/x64/Rgui.exe")); q("no") }, .GlobalEnv)
/bin/x64/Rgui.exe
আর শুরু করতে আপনি যা ব্যবহার করেন তা মেলানোর জন্য আপনাকে ফাইলের পাথ সম্পাদনা করতে হবে You আপনি কেবল এই লাইনটি আপনার .Rprofile
ফাইলে রেখেছেন , তারপরে আপনি restart.R
আপনার আর কোড প্রবেশ করে কল করতে পারবেন ।
অন্যান্য পদ্ধতির তুলনায় এর নেতিবাচকতাটি হ'ল আপনি যেমন কমান্ড লাইন আর্গুমেন্টগুলি ঠিক --no-save
মতো করতে পারছেন না shell
তবে কমপক্ষে এটি আপনাকে মূল আর প্রক্রিয়াটি বন্ধ করে দেবে।
এর সমাধান অনুসন্ধান করার পরে, আমি এখানে এই সমাধানের উপর ভিত্তি করে আমার সমস্যাটি সমাধান করেছি , আর প্যাকেজ আরডিসিএমসিলেট ব্যবহার করে ।
সমাধান বেলো কেবল আরস্টুডিও (উইন্ডোজ) এর মধ্যে কাজ করে, এটি একবার কী-স্ট্রেসগুলি সিআরটিএল + শিফট + এফ 10 অনুকরণ করে ।
RDCOMClient প্যাকেজটি অবশ্যই কমান্ড বেলো সহ ইনস্টল করা উচিত:
install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")
আরস্টুডিও (উইন্ডোজ 10) এর মধ্যে কী-টিপসগুলি অনুকরণ করার কোডটি হ'ল:
library(RDCOMClient)
wsh <- COMCreate("Wscript.Shell")
wsh$SendKeys("^+{F10}")
উপরের কোডের শেষ লাইনে, 'ctrl' কীটি '' 'দ্বারা এবং শিফট কী' + 'দ্বারা উপস্থাপন করা হয়। এই কী উপস্থাপনের জন্য সমস্ত ব্যাখ্যা এখানে উপলব্ধ ।
ঠিক উপরের কোডের শেষ লাইনটি চালানোর পরে, @ স্টাডিফিশের মন্তব্য অনুসারে আরস্টুডিওতে পুরো আর সেশনটি পুনরায় সেট করা হবে । এটি বর্তমান সেশন থেকে সমস্ত ডেটা সরিয়ে দেয় এবং সেশনে সমস্ত লোড হওয়া প্যাকেজগুলি আনলোড করে।
আপনার .R প্রোফাইলে এই ফাংশনটি লিখুন
r <- function() {
assign('.Last', function() {system('R')}, envir = globalenv())
quit(save = 'no')
}
r()
আপনাকে আর সেশন পুনরায় আরম্ভ করবে। লোড হওয়া প্যাকেজগুলি পুনরায় লোড হবে না। আপনার পরিবেশ সংরক্ষণ করা হবে না।
লিনাক্সের জন্য কাজ করে। অন্যান্য ওএসে কী ঘটতে পারে তার কোনও ধারণা নেই
আমার উইন্ডোতে একই রিফ্রেশ সেশন কার্যকারিতা প্রয়োজন এবং আমি কোডটির কিছুটা পরিবর্তিত সংস্করণ দিয়ে শেষ করেছি:
makeActiveBinding("refresh", function() { shell(paste0("start \"\" \"", R.home(), "/bin/x64/Rgui.exe\"")); q("no") }, .GlobalEnv)
উইন্ডোগুলিতে আপনার Rprofile.site
ফাইলটি পরিবর্তন করতে হবে। এটি আর এর etc
ডিরেক্টরিতে রয়েছে। bin/x64
আপনার সিস্টেমে কনফিগারেশন অনুযায়ী যে পথটি পরিবর্তন করতে পারে তার শেষ অংশটিও দেখুন। আমি আশা করি এটি অন্যকেও সহায়তা করবে।
মার্টিন মরগ্যান ব্যবহারের ধারণার সাথে সঙ্গতিপূর্ণ .Last()
; এটি আর কমান্ড-লাইন বিকল্পগুলির আগের সেট হিসাবে একই সেটটি পুনরায় আরম্ভ করে:
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)
}
আমি মনে করি, বিকল্পগুলির মধ্যে একটি বর্তমান ওয়ার্কিং ডিরেক্টরি সেট করে আর এর সেরা ব্যবহারটি উপলব্ধি করে। তারপরে যখনই আপনার ওয়ার্কস্পেস / সেশন ফাইলটি আপনাকে দেখাতে শুরু করে বা এতে আপনার কাজের যথেষ্ট পরিমাণ থাকে (প্রকল্পগুলির মধ্যে) আপনি কেবল এই ডিরেক্টরিটি ডিফল্ট অধিবেশন ফাইলটির নাম পুনরায় নামকরণের পরে আর এবং আর / আরস্তুদিও আপনাকে স্বয়ংক্রিয়ভাবে নতুন করে শুরু করতে পারবেন আপনার বর্তমান কাজকে বিরক্ত না করে ওয়ার্কস্পেস / সেশন ফাইল।
আর ছেড়ে দিতে এবং বর্তমান সেশন ফাইলটির নতুন নামকরণ মনে রাখবেন
অবশ্যই আপনি যদি বর্তমানের কাজটি সংরক্ষণ করতে না চান তবে আপনাকে নিশ্চিত করতে হবে যে আপনি বস্তুগুলি পুনরায় সেট করতে বা সেগুলি অপারেশনগুলি আসল বস্তুগুলি থেকে অনুলিপি করার পরে সম্পন্ন হয়েছে যাতে তারা যেমন রয়েছে তেমন। আমাকে বিশ্বাস করুন, আপনি সবসময় পুরানো ওয়ার্কস্পেসগুলি লোড করতে পারবেন তা জেনে রাখা একটি প্রলোভন তবে এর চেয়ে বেশি কার্যকর।
সংক্ষিপ্ত প্রস্থান আর এ, প্রস্থান করার সময় এটি আপনাকে কিছুটা ফাঁক দেয় মানে এই কর্মক্ষেত্রটি পূর্ণ, প্রস্থান সমাপ্তির পরে পুনরায় নামকরণ করুন এবং আর / রস্তুদিওকে একটি নতুন ওয়ার্কস্পেস দিয়ে পুনরায় চালু করুন। আপনি নতুন ওয়ার্কস্পেসে সর্বদা নির্বাচিত বস্তু লোড করতে পারেন। আদর্শভাবে সমস্ত গুরুত্বপূর্ণ কাজ প্রকল্প ডিরেক্টরিতে হওয়া উচিত তবে আপনার সময়সীমায় আবার ফিরে যেতে আপনার কাজের ইতিহাস প্রয়োজন এবং আপনি যখন দীর্ঘ প্রকল্পে চলে আসেন তখন সেভ সেশনগুলি কোনও কোনও সময়ে কার্যকর হয়। আপনার যদি এটির কোনও প্রয়োজন না হয়rm(list=ls())
এছাড়াও, আমি RDComClient
এডুয়ার্ডো আলভিনের ধারণাটি পছন্দ করি তবে এটি বন্ধ হয়ে গেছে।
বিকল্প বিকল্প
আপনার কর্মক্ষেত্রের অভ্যন্তরে যে কোনও সময় লাগেজ থেকে মুক্তি পাওয়ার জন্য একটি সহজ বিকল্প হ'ল 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)
বা - সেভ বা - না-সংরক্ষণ করুন
paste0(R.home(),"/bin/i386/R --no-save")
আমি মনে করি রিফ্রেশ করার আগে আপনি setwd () ব্যবহার করেছেন তবে এটিই আপনার প্রয়োজন ( এটি, দয়া করে এটি করুন)
আমি নিম্নলিখিত ফাংশন লিখেছি। মনে আছে! আপনি কেবল এটি একবার ব্যবহার করতে পারবেন, তারপরে আর সেশনটি পুনরায় চালু হওয়ার পরে আপনাকে এটি পুনরায় লোড করতে হবে।
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())
তবে ঠিক যা বোঝায় তা নয়?