Моя память забивается кучей промежуточных файлов (назовите их temp1, temp2 и т.д.). Можно ли удалить их из памяти, не делая rm(temp1)
, rm(temp2)
по одному за раз? Я пробовал rm(list(temp1, temp2, etc.))
, но это не работает.
Удалите несколько объектов с помощью rm()
Ответ 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())
, он очистит все переменные.