用rm()删除多个对象

时间:2012-07-24 05:49:48

标签: r

我的记忆被一堆中间文件阻塞(称为temp1,temp2等)。是否可以在不同时执行rm(temp1)rm(temp2)的情况下将其从内存中删除?我试过了rm(list(temp1, temp2, etc.)),但这似乎不起作用。

4 个答案:

答案 0 :(得分:103)

使列表成为字符向量(不是名称向量)

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

rm(temp1, temp2)

答案 1 :(得分:94)

另一个解决方案rm(list=ls(pattern="temp")),删除与该模式匹配的所有对象。

答案 2 :(得分: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)

答案 3 :(得分:3)

您可以尝试的其他变体是(扩展@ mnel的回答) 如果你有很多温度&#39;。

这里&#34; n&#34;可能是临时变量的数量

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