有人知道如何删除 R 中除一个对象之外的所有内容吗?通常,要删除我编码的所有内容:
rm(list=ls())
所以我尝试了:
rm(c(list=ls()-my_object))
但它没有用。
有人知道如何删除 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)
虽然很久以前就问过了。我的回答将来可能会对其他人有所帮助,假设您想从环境中删除所有内容,obj1
除了obj2
x<- which(ls()=="obj1"|ls()=="obj2")
ls1<- ls()[-x]
rm(list = ls1)