Как очистить только несколько конкретных объектов из рабочей области?


161

Я хотел бы удалить некоторые данные из рабочей области. Я знаю, что кнопка «Очистить все» удалит все данные. Тем не менее, я хотел бы удалить только определенные данные.

Например, у меня есть эти фреймы данных в разделе данных:

data
data_1
data_2
data_3

Я хотел бы удалить data_1, data_2и data_3, сохраняя data.

Я попытался data_1 <- data_2 <- data_3 <- NULL, который удаляет данные (я думаю), но все еще держит их в рабочей области, поэтому это не совсем то, что я хотел бы сделать.

Ответы:


247

Вы найдете ответ, набрав ?rm

rm(data_1, data_2, data_3)

44
Для удаления всех переменных вы можете использовать rm(list=ls()).
Larkee

1
но как вы можете сделать с GUI, без командной строки? как в Revolution R
Скан

1
Что делать, если я хочу удалить все переменные с именами, начинающимися с буквы A, скажем «A001», «A002» .... «A999». Я не хочу вводить так много имен переменных. Спасибо!
user3768495 22.09.15

2
Используйте ответ @ mbask (чуть ниже): rm(list = ls()[grep("A", ls())])
Поп

74

Полезный способ удалить целый набор именованных объектов:

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

тем самым удаляя все объекты, имя которых начинается со строки «tmp».

Изменить: После комментария Gsee, используя patternаргумент:

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

Редактировать: Отвечая на комментарий Рафаэля, один из способов сохранить только подмножество объектов - присвоить данным, которые вы хотите сохранить, определенный шаблон. Например, если вы хотите удалить все объекты, чье имя не начинается с paperвас, введите следующую команду:

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

7
lsпринимает patternаргумент, так что вы можете упростить это доrm(list=ls(pattern="^tmp"))
GSee

1
Отдельно, проверьте, что происходит, когда вы используете value=TRUEс grep... может сохранить некоторые набрав.
GSee

Привет, есть ли способ сохранить несколько данных и удалить другие (большее количество)? Приветствия
Рафаэль

1
Здравствуй! И как я могу сохранить в моей среде R два разных шаблона? Я пытался "rm (list = grep (" ^ paper "|" ObjectExample ", ls (), value = TRUE, invert = TRUE))". Кто-нибудь знает?
Dekike

1
Вы должны включить ваше регулярное выражение в patternаргумент grep:rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

Следующая команда сделает

rm(list=ls(all=TRUE))

2
Это удалит все из рабочей области, а не только data1, data2и data3(т.е. dataбудут удалены тоже). Что хорошо, если ты этого хочешь ...
Фил

2
А что если кто-то захочет удалить только данные, а не функции, значения или другие объекты, скажем, в глобальной среде?
Никос Александрис


6

Вы можете использовать aproposфункцию, которая используется для поиска объектов, используя частичное имя.

rm(list = apropos("data_"))

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()

3

Если вы используете RStudio, пожалуйста, не используйте этот rm(list = ls())подход! * Вместо этого вы должны строить свой рабочий процесс, часто используя Ctrl+ Shift+F10 ярлык для перезапуска сеанса R. Это самый быстрый способ обнулить текущий набор определяемых пользователем переменных и очистить загруженные пакеты, устройства и т. Д. Воспроизводимость вашей работы заметно возрастет, если принять эту привычку.

Посмотрите эту превосходную ветку в сообществе Rstudio для (h / t @kierisi) для более подробного обсуждения (основная суть отражена в том, что я уже говорил).

Я должен признать, что мои первые несколько лет сценарий R кодирования показывается после сценария, начинающегося с rm «трюка» - я пишу этот ответ как совет всем, кто может начать свою карьеру в R.

* конечно, для этого есть законное применение - очень похоже attach- но начинающим пользователям будет гораздо лучше обслуживаться (IMO), пересекающим этот мост позднее.


3
  1. В RStudio убедитесь, что Environmentвкладка находится в режиме Grid(не List).

  2. Отметьте объект (ы), которые вы хотите удалить из окружения.

  3. Нажмите на значок метлы.


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

1

Чтобы очистить все данные:

нажмите на Misc>Remove all objects.

Тебе хорошо идти.

Чтобы очистить консоль:

нажмите на edit>Clear console.

Нет необходимости в каком-либо коде.


1
Хотя я должен был сделать Session> Clear Workspace....
Питер К.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.