Подтвердить что ты не робот

Удалите несколько объектов с помощью rm()

Моя память забивается кучей промежуточных файлов (назовите их temp1, temp2 и т.д.). Можно ли удалить их из памяти, не делая rm(temp1), rm(temp2) по одному за раз? Я пробовал rm(list(temp1, temp2, etc.)), но это не работает.

4b9b3361

Ответ 1

Сделайте список символьным вектором (а не вектором имен)

rm(list = c('temp1','temp2'))

или

rm(temp1, temp2)

Ответ 2

Другое решение rm(list=ls(pattern="temp")), удалите все объекты, соответствующие шаблону.

Ответ 3

Или используя регулярные выражения

"rmlike" <- function(...) {
  names <- sapply(
    match.call(expand.dots = FALSE)$..., as.character)
  names = paste(names,collapse="|")
  Vars <- ls(1)
  r <- Vars[grep(paste("^(",names,").*",sep=""),Vars)]
  rm(list=r,pos=1)
}

rmlike(temp)

Ответ 4

Другим вариантом, который вы можете попробовать, является (расширение ответа @mnel) если у вас много temp'x '.

здесь "n" может быть числом присутствующих временных переменных

rm(list = c(paste("temp",c(1:n),sep="")))

Ответ 5

ls() отобразит все переменные. поэтому, если вы попробуете rm(list=ls()), он очистит все переменные.