【发布时间】:2019-04-13 08:12:56
【问题描述】:
我知道rm(list = ls()) 将清除我的工作区。
我有一个数据框 x,我想保留它,同时从内存中删除所有其他内容。我该怎么做?
rm(list = ls(!x)) #???
【问题讨论】:
标签: r
我知道rm(list = ls()) 将清除我的工作区。
我有一个数据框 x,我想保留它,同时从内存中删除所有其他内容。我该怎么做?
rm(list = ls(!x)) #???
【问题讨论】:
标签: r
试试:rm(list = setdiff(ls(), x))
根据米奇的评论编辑:
环境中的三个对象:
ls()
[1] "data_df" "list_ls" "vector_v"
删除 data_df:
rm(list = setdiff(ls(), "data_df"))
ls()
[1] "data_df"
要保留的东西的向量:
toKeep_v <- c("list_ls", "vector_v")
rm(list = setdiff(ls(), toKeep_v)
ls()
[1] "list_ls" "vector_v"
【讨论】:
rm 有NSE,但setdiff 没有,所以这会产生意想不到的结果,除非x 是"x"