R içinde bir takma ad yapmanın bir yolu var mı? q() temiz bir R oturumunu yeniden başlatacak bir ?
Ve evet, yazmak için çok tembelim q()ve sonra mektubu R:)
R içinde bir takma ad yapmanın bir yolu var mı? q() temiz bir R oturumunu yeniden başlatacak bir ?
Ve evet, yazmak için çok tembelim q()ve sonra mektubu R:)
saveparametresi eklemek olabilir . Ardından, R'yi yeniden başlatan yeni bir işleve için bir takma ad atanabilir.q()"r"q("r")
Yanıtlar:
RStudio'daysanız: command / ctrl + shift + F10
Ayrıca kullanabilirsin
.rs.restartR()
.rs.restartR()makinemde bunlardan hiçbirini yapmıyor gibi görünüyor ..
R'ye nasıl başladığınıza bağlı olarak, şu satırlardan birini .Rprofiledosyanıza yerleştirmeyi deneyin :
makeActiveBinding("refresh", function() { shell("Rgui"); q("no") }, .GlobalEnv)
makeActiveBinding("refresh", function() { system("R"); q("no") }, .GlobalEnv)
Ardından bunu R konsoluna girerek:
refresh
mevcut oturumu kapatacak ve yeni bir oturum başlatacak.
.Last <- function() system("R")hatta daha sonra kapatma döngüsünde reg.finalizer(.GlobalEnv, function(e) system("R"), TRUE). Sonra q()geri gelmeye devam ediyor.
.Rs.restartR () işlevinin ctrl + shift + F10 tuşlarına basmaya benzer şekilde çalıştığını gördüm. ama paketleri boşaltmayın
getAnywhere(".rs.restartR")göründüğü olmak tools:rstudio. Buna saf bir R seansında erişme şansım olmadı.
.rs.restartR()paketleri boşaltmaz, bu nedenle tam olarak aynı değildirctrl+shift+f10
Eski gönderi, ancak cevapların hiçbiri işe yaramıyor (benim için Windows kullanıyorum, başkalarını test etmedim), bu yüzden çözümümü ekleyeceğim. Terminolojimden bazıları burada yanlış olabilir, ancak bu noktayı anlamalı:
Yukarıdaki cevaplar pek işe yaramıyor
Burada gönderilen yanıtların çoğu, yeni bir R konsolu açarken ve orijinal konsolu kapatması talimatını verirken, yeni konsol eski konsolun uygulama bağlamında çalışan bir işlem olduğundan , kullanmayı içerir shellveya systemtam olarak çalışmaz. Bu, orijinal konsolun yeni konsol kapanana kadar kapanamayacağı anlamına gelir. Hedgedandlevered gibi yukarıdaki kullanıcılardan bazıları, orijinal konsolu kapatmanın yeni konsolu kapanmaya zorladığını bildirdi. Denediğimde yeni konsol açılıyor ancak eski konsol, yeni konsol kapatılana kadar donmuş durumda açık kalıyor.
Temel sorun, uygulama bağlamını orijinal konsoldan yenisine çağırmak shellveya systemdeğiştirmemektir ve bu nedenle orijinal işlem, yeni konsol kapanana kadar sona eremez.
Benim için çalışan alternatif
Bunun yerine shell.exec, normalde dosya türüne bağlı olarak varsayılan uygulamada bir dosyayı açmak için kullanılacak olanı kullanın . Bir .exe'de kullanıldığında, görünüşe göre yürütülebilir dosyayı çalıştırır. Ancak önemli fark, sistemin uygulamayı kendi bağlamında başlatmasıdır. İşte benim için çalışan kod:
makeActiveBinding("restart.R", function() { shell.exec(paste0(R.home(),"/bin/x64/Rgui.exe")); q("no") }, .GlobalEnv)
/bin/x64/Rgui.exeR'yi başlatmak için kullandığınızla eşleşecek şekilde dosya yolunu düzenlemeniz gerekir.Yalnızca bu satırı .Rprofiledosyanıza koyarsınız , sonra girerek çağırabilirsiniz.restart.RR'yi R kodunuzu .
Bunun diğer yöntemlere göre dezavantajı, komut satırı argümanlarını --no-savesadece yapacağınız gibi iletememenizdir shell, ancak en azından bu, orijinal R sürecini kapatmanıza izin verecektir.
Buna bir çözüm aradıktan sonra, sorunumu burada bu çözüme dayanarak , R Paketi RDCOMClient kullanarak çözdüm .
Aşağıdaki çözüm, ctrl + shift + F10 tuşlarına bastıktan sonra RStudio (Windows) içinde çalışır .
RDCOMClient paketi aşağıdaki komutla yüklenmelidir:
install.packages("RDCOMClient", repos = "http://www.omegahat.net/R")
RStudio (Windows 10) içindeki tuş basışlarını simüle eden kod:
library(RDCOMClient)
wsh <- COMCreate("Wscript.Shell")
wsh$SendKeys("^+{F10}")
Yukarıdaki kodun son satırında, 'ctrl' tuşu '^' ve shift tuşu '+' ile temsil edilmektedir. Bu temel temsiller için tüm açıklamalar burada mevcuttur .
Yukarıdaki kodun son satırını çalıştırdıktan hemen sonra, @steadyfish'in yorumuna göre RStudio'daki tüm R oturumu sıfırlanacaktır . Yani, mevcut oturumdaki tüm verileri kaldırır ve oturumdaki tüm yüklü paketleri kaldırır.
Bu işlevi .R profilinize yazın
r <- function() {
assign('.Last', function() {system('R')}, envir = globalenv())
quit(save = 'no')
}
r()R oturumunu yeniden başlatır. Yüklenen paketler yeniden yüklenmeyecek. Çevreniz kurtarılmayacak.
Linux için çalışıyor. Diğer işletim sistemlerinde ne olabileceği hakkında hiçbir fikrim yok
Windows'ta aynı yenileme oturumu işlevine ihtiyacım vardı ve sonunda kodun biraz değiştirilmiş bir sürümüyle sonuçlandım:
makeActiveBinding("refresh", function() { shell(paste0("start \"\" \"", R.home(), "/bin/x64/Rgui.exe\"")); q("no") }, .GlobalEnv)
Windows'ta Rprofile.sitedosyayı değiştirmeniz gerekir . R'nin etcdizini altındadır . Ayrıca bin/x64, sistem yapılandırmanıza göre değişebilen yolun son kısmına da dikkat edin . Umarım bu başkalarına da yardımcı olur.
Martin Morgan'ın kullanma fikri doğrultusunda .Last(); bu, R'yi daha önce çağrılanla aynı komut satırı seçenekleri kümesiyle yeniden başlatı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)
}
Bence, seçeneklerde geçerli bir çalışma dizini ayarlayarak R'nin en iyi şekilde kullanılmasının farkına varılır. Daha sonra, çalışma alanı / oturum dosyanız sizi göstermeye başladığında veya içinde yeterince çalışmanız olduğunda (projeler arasında), R'yi kapattıktan sonra bu varsayılan oturum dosyasını çalışma dizininde yeniden adlandırabilirsiniz ve R / Rstudio sizi otomatik olarak yeni bir mevcut çalışmanızı bozmadan çalışma alanı / oturum dosyası.
R'den çıkmayı ve mevcut oturum dosyasını yeniden adlandırmayı unutmayın
Elbette mevcut çalışmayı kaydetmek istemiyorsanız, nesneleri sıfırladığınızdan emin olmalısınız veya bunlar üzerindeki işlemler, orijinal nesnelerden olduğu gibi kopyalandıktan sonra yapıldı. İnanın bana, eski çalışma alanlarını her zaman yükleyebileceğinizi bilmek caziptir, ancak olmamaktan daha yararlıdır.
Kısaca R'den çıkın, bu size biraz boşluk verirken, bu çalışma alanının dolu olduğu anlamına gelir, çıkış tamamlandıktan sonra yeniden adlandırın ve R / Rstudio'yu yeni bir çalışma alanıyla yeniden başlatın. Yeni çalışma alanında her zaman seçilen nesneleri yükleyebilirsiniz. İdeal olarak, tüm önemli işler Proje dizinlerinde olmalıdır, ancak yine de zaman zaman geri dönmek için işlerinizin geçmişine ihtiyacınız vardır ve kaydedilen oturumlar, daha uzun projelerde olduğunuzda bir noktada yararlı olur. Eğer hiçbirine ihtiyacın yoksa sadecerm(list=ls())
Ayrıca RDComClient@Eduardo Alvin'in fikrini beğendim ama artık sona erdi.
ALTERNATİF SEÇENEK
Çalışma alanınızda istediğiniz zaman bagajdan kurtulmanın basit bir alternatifi kullanmaktır. save.image
save.image("Rstreamingscience.data")
quit(save='no')
load("Rstreamingscience.data") ##G:/ADA registers##
save.image("Rstreamingscience.data")
Bu, dilediğiniz gibi gelip gitme ve ihtiyaç duyduğunuz kadar çalışma alanı açma özgürlüğü sağlar .
makeActiveBinding("refresh", function() { system(paste0(R.home(),"/bin/i386/R")); q("no") }, .GlobalEnv)
veya --save veya --no-save ile
paste0(R.home(),"/bin/i386/R --no-save")
Yenilemeyi çağırmadan önce setwd () kullandıysanız ihtiyacınız olan şeyin bu olduğunu düşünüyorum (ne bu ne de orijinal sürüm benim için çalışmıyor, çünkü R'yi yeniden başlatıp sonra kendi kendini kapatıyor, yeni bir pencere asla açılmıyor. bunu lütfen yap)
Aşağıdaki işlevi yazdım. Hatırlamak! Yalnızca bir kez kullanabilirsiniz, ardından R oturumu yeniden başladıktan sonra yeniden yüklemeniz gerekir.
clc <- function() {
rm(list = ls(envir = globalenv()),envir = globalenv()) #clear Vars from global enviroment
gc() #grabage colector
cat("\014") #clc
.rs.restartR() #clear session
}
Bazen bir paketi çıkarmak da yardımcı olur.
rm(list=ls())ancak demek istediğiniz bu değil mi?