175

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

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

data
data_1
data_2
data_3

我想删除data_1,data_2data_3, 同时保留data.

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

4

12 回答 12

264

您将通过键入找到答案?rm

rm(data_1, data_2, data_3)
于 2012-08-01T15:00:45.427 回答
84

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

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))
于 2012-08-01T16:11:45.107 回答
15

以下命令会做

rm(list=ls(all=TRUE))
于 2015-06-04T09:52:45.710 回答
8

使用以下命令

remove(list=c("data_1", "data_2", "data_3"))
于 2015-07-30T23:55:06.500 回答
8

您可以使用apropos用于使用部分名称查找对象的功能。

rm(list = apropos("data_"))
于 2017-10-27T20:35:14.553 回答
7
  1. 在 RStudio 中,确保Environment选项卡处于Grid(不是List)模式。

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

  3. 单击扫帚图标。

于 2018-10-14T19:15:26.857 回答
4

如果您只想删除一组变量中的一个,那么您可以创建一个列表并仅保留您需要的变量。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()
于 2017-03-02T12:41:24.040 回答
3
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
于 2016-06-09T00:50:02.943 回答
3

如果您使用的是 RStudio,请考虑永远不要使用该rm(list = ls())方法!*相反,您应该围绕经常使用 ++ 快捷方式重新启动 R 会话来构建您的Ctrl工作流程ShiftF10这是核对当前用户定义变量集和清除加载的包、设备等的最快方法。通过采用这种习惯,您的工作的可重复性将显着提高。

请参阅(h/t @kierisi) 的 Rstudio 社区上的这个出色的帖子,以进行更彻底的讨论(主要要点已被我已经陈述过)。

我必须承认我自己最初几年的 R 编码特色脚本以rm“技巧”开头——我写这个答案是为了给其他可能开始 R 职业生涯的人提供建议。

*当然,这有合法的用途——很像attach——但新手用户将在以后越过这座桥得到更好的服务(IMO)。

于 2017-11-28T14:07:52.137 回答
1

清除所有数据:

点击Misc>Remove all objects

你很高兴。

要清除控制台:

点击edit>Clear console

不需要任何代码。

于 2014-04-22T13:53:25.963 回答
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")))
于 2021-04-29T01:31:01.800 回答
0

添加另一种方式,使用 ls() 和 remove()

ls() 返回一个字符串向量,给出指定环境中对象的名称。

使用 ls() 创建要从环境中删除的对象列表,然后使用 remove() 将其删除。

remove(list = ls()[ls() !=  "data"])
于 2021-11-03T01:31:28.043 回答