Yanıtlar:
İşte bunu kullanarak basit bir yapı setdiff
:
rm(list=setdiff(ls(), "x"))
Ve tam bir örnek. Bunu kendi sorumluluğunuzda çalıştırın - aşağıdakiler dışındaki tüm değişkenleri kaldıracaktır x
:
x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"
rm(list=setdiff(ls(), "x"))
ls()
[1] "x"
Kullanılması keep
gelen işlevi gdata
paketinin oldukça uygundur.
> ls()
[1] "a" "b" "c"
library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"
Sanırım başka bir seçenek çalışma ortamını RStudio'da açmak ve daha sonra listeyi ortamın sağ üst köşesindeki ızgaraya değiştirmek (aşağıdaki resim). Ardından, temizlemek istediğiniz nesneleri işaretleyin ve son olarak temizle'ye tıklayın.
Benzer ama biraz farklı bir sorunun cevabını aramak için birkaç saat harcadım - bir avuç vektör hariç R'deki (fonksiyonlar dahil) tüm nesneleri silebilirdim.
Bunu yapmanın bir yolu:
rm(list=ls()[! ls() %in% c("a","c")])
Saklamak istediğim vektörlere 'a' ve 'c' denir.
Umarım bu aynı çözümü arayan herkese yardımcı olur!
rm(list=setdiff(ls(), c("a", "c")))
, değil mi? @ Andrie'nin cevabına bakınız.
Adları bir desenle eşleşen tüm nesneleri tutmak için şunları kullanabilirsiniz grep
:
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
Saklamak v
istediğiniz nesnenin adıyla değiştirin
rm(list=(ls()[ls()!="v"]))
şapka ipucu: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
Bu, ls()
' pattern
seçeneğinden yararlanır , aynı desende tutmak istemediğiniz birçok nesneniz olması durumunda:
> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"
> ls()
[1] "foo1" "foo2" "foo3" "x"
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"
rm
fonksiyon her zaman dikkatli kullanılmalıdır (daha çok kabukta!). Sorunuzun cevabı için düzenlememe bakın.
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()
farklı bir şekilde düşünelim, ya bir grubu çıkarmak istersek? bunu dene,
rm(list=ls()[grep("xxx",ls())])
Şahsen ekranımdaki çok fazla tabloyu, değişkeni sevmiyorum, ancak bunları kullanmaktan kaçınamıyorum. Bu yüzden "xxx" ile başlayan geçici şeyleri adlandırıyorum, böylece artık kullanılmadıktan sonra bunları kaldırabilirim.
Bir işlev içinden, .GlobalEnv içindeki tüm nesneleri işlev dışında rm
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
Aşağıdakiler konsolunuzdaki tüm nesneleri kaldıracak
rm(list = ls())