回答:
パッケージのkeep
関数を使用するgdata
と非常に便利です。
> 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"
似ているが少し異なる質問への回答を探すのに数時間費やしただけです-少数のベクトルを除いて、R内のすべてのオブジェクト(関数を含む)を削除できる必要がありました。
これを行う1つの方法:
rm(list=ls()[! ls() %in% c("a","c")])
保持したいベクトルの名前は「a」と「c」です。
これが同じ解決策を探している人に役立つことを願っています!
rm(list=setdiff(ls(), c("a", "c")))
です。@Andrieの回答を参照してください。
名前がパターンに一致するすべてのオブジェクトを保持するにはgrep
、次のようにを使用できます。
to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)
v
保持するオブジェクトの名前に置き換えます
rm(list=(ls()[ls()!="v"]))
ハットチップ:http : //r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html
これは ls()
pattern
、保持したくない同じパターンのオブジェクトが多数ある場合に、のオプションします。
> 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
関数は常に注意して使用する必要があると思います(シェルではさらにそうです!)。あなたの質問に対する答えについては、私の編集を参照してください。
関数内から、関数を除く.GlobalEnv内のすべてのオブジェクトをrm
initialize <- function(country.name) {
if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
}
}
以下は、コンソールからすべてのオブジェクトを削除します
rm(list = ls())