如何从工作区中仅清除几个特定对象?

时间:2012-08-01 14:58:55

标签: r rstudio

我想从工作区中删除一些数据。我知道“全部清除”按钮将删除所有数据。但是,我想删除某些数据。

例如,我在数据部分中有这些数据框:

data
data_1
data_2
data_3

我希望删除data_1data_2data_3,同时保留data

我尝试了data_1 <- data_2 <- data_3 <- NULL,它确实删除了数据(我认为),但仍然将其保留在工作空间区域中,所以它不完全是我想做的。

11 个答案:

答案 0 :(得分:214)

您可以通过输入?rm

找到答案
rm(data_1, data_2, data_3)

答案 1 :(得分:63)

删除一整套类似命名的对象的有用方法:

rm(list = ls()[grep("^tmp", ls())])

从而删除名称以字符串“tmp”开头的所有对象。

编辑:遵循Gsee的评论,使用pattern参数:

rm(list = ls(pattern = "^tmp"))

编辑:回答Rafael评论,仅保留对象子集的一种方法是使用特定模式命名要保留的数据。例如,如果要删除名称不以paper开头的所有对象,则会发出以下命令:

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))

答案 2 :(得分:14)

以下命令将执行

rm(list=ls(all=TRUE))

答案 3 :(得分:7)

使用以下命令

remove(list=c("data_1", "data_2", "data_3"))

答案 4 :(得分:4)

您可以使用apropos函数来查找使用部分名称的对象。

rm(list = apropos("data_"))

答案 5 :(得分:3)

如果您只想删除一组变量中的一个,那么您可以创建一个列表并保留您需要的变量。 rm函数可用于删除除“数据”之外的所有变量。这是脚本:

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()

答案 6 :(得分:2)

paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3

答案 7 :(得分:2)

如果您正在使用RStudio,请考虑从不使用rm(list = ls())方法!* 相反,您应该经常使用Ctrl + {{1 }} Shift快捷方式重启您的R会话。这是同时修改当前用户定义变量集并清除加载的包,设备等的最快方法。通过采用这种习惯,您工作的可重复性将显着提高。

请参阅Rstudio社区的this excellent thread(h / t @kierisi)进行更全面的讨论(主要要点是我已经说明的内容)。

我必须承认我自己的前几年R编码特色脚本在脚本开始后使用F10“技巧” - 我正在写这个答案作为建议任何可能正在开始他们的R职业的人

*当然有合法的用途 - 就像rm一样 - 但是开始用户会更好地服务(IMO)以后越过那座桥。

答案 8 :(得分:1)

清除所有数据:

点击Misc>Remove all objects

你很高兴。

清除控制台:

点击edit>Clear console

无需任何代码。

答案 9 :(得分:1)

  1. 在RStudio中,确保Environment标签处于Grid(而非List)模式。

  2. 勾选要从环境中删除的对象。

  3. 单击扫帚图标。

答案 10 :(得分:0)

你也可以使用 tidyverse

# to remove specific objects(s)
rm(list = ls() %>% str_subset("xxx")) 
# or to keep specific object(s)
rm(list = setdiff(ls(), ls() %>% str_subset("xxx")))