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

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

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

data
data_1
data_2
data_3

Я хотел бы удалить data_1, data_2 и data_3, оставив при этом data.

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

Ответ 1

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

rm(data_1, data_2, data_3)

Ответ 2

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

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

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

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

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

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

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

Ответ 3

Следующая команда выполнит

rm(list=ls(all=TRUE))

Ответ 4

Используйте следующую команду

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

Ответ 5

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

rm(list = apropos("data_"))

Ответ 6

Если вы просто хотите удалить одну из группы переменных, вы можете создать список и сохранить только нужную вам переменную. Функция rm может использоваться для удаления всех переменных, кроме "данных". Вот script:

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

Ответ 7

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

Ответ 8

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

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

Я должен признать, что мои первые несколько лет кодирования R были представлены script после script, начиная с трюка rm ". Я пишу этот ответ в качестве совета для всех, кто может начать их R.

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

Ответ 9

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

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

Ваше добро.

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

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

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

Ответ 10

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

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

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