1 つのオブジェクトを除いて R のすべてを削除する方法について、誰かが考えを持っていますか? 通常、コードをすべて削除するには:
rm(list=ls())
だから私は試しました:
rm(c(list=ls()-my_object))
しかし、うまくいきませんでした。
1 つのオブジェクトを除いて R のすべてを削除する方法について、誰かが考えを持っていますか? 通常、コードをすべて削除するには:
rm(list=ls())
だから私は試しました:
rm(c(list=ls()-my_object))
しかし、うまくいきませんでした。
このsetdiff()
関数はセット間の差を示すので、これを使用してすべてのオブジェクト ( ls()
) と保持したいオブジェクトの差を与えることができます。例えば
## create some objects
df <- data.frame()
v <- as.numeric()
# show everything in environment
objects()
# [1] "df" "v"
## or similarly
ls()
# [1] "df" "v"
## the setdiff() funciton shows the difference between two sets
setdiff(ls(), "df")
# [1] "v"
# so we can use this to remove everything except 'df'
rm(list = setdiff(ls(), "df"))
objects()
# [1] "df"
私のやり方は他の人とほとんど同じですが、私は通常、論理インデックスに引き寄せられる傾向があります...
単一オブジェクトの場合、論理インデックスを使用
rm(list=ls()[ls()!= "object_I_want"])
または、エラーメッセージが返されても、これは複数のオブジェクトに対して機能します
rm(list=ls()[ls()!= c("object_I_want1", "object_I_want2")])
ワークスペースにいくつかのオブジェクトしかない場合は、数値インデックスを数えて使用できます
ls();
#returns all objects in alphabetical order
# [1] "object_I_dont_want" "object_I_want" "object_I_dont_want"
rm(list=ls()[-2])
技術的には ls() を使用する必要はありません。なんらかの理由で、保持したいオブジェクトの継続的な集計を保持する必要がある場合、または保持または削除したいオブジェクトのセットが既にある場合などは、次のような排他リストを使用できます*ただし、技術的には、オブジェクトもサブセット化インデックスとして使用されたままになります。
exsubset = ls()[ls()!= c("object.I.want1", "object_I_want2")];
rm(list=exsubset)