用rm()删除多个对象

use*_*432 75 r

我的记忆被一堆中间文件阻塞(称为temp1,temp2等).是否有可能在没有做的情况下将它们从内存中删除rm(temp1),rm(temp2)一次一个?我试过了rm(list(temp1, temp2, etc.)),但这似乎不起作用.

mne*_*nel 111

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

rm(list = c('temp1','temp2'))
Run Code Online (Sandbox Code Playgroud)

要么

rm(temp1, temp2)
Run Code Online (Sandbox Code Playgroud)

  • @Sam`rm(list = ls(all = TRUE))`如果你想确保得到一切. (5认同)
  • 要删除内存中的所有内容,您可以说:rm(list = ls()) (3认同)

Ala*_*lan 98

另一种解决方案rm(list=ls(pattern="temp"))是删除与模式匹配的所有对象.

  • 您只需为模式添加更多标准即可.对于你的例子,`pattern ="^ temp"`将只捕获以"temp"开头的变量,所以不是变量`ABCtemp`. (8认同)
  • 另一种可能性是@BrodieG在这里给出的答案/sf/ask/1517454641/ (2认同)

Die*_*nne 5

或者使用正则表达式

"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)
Run Code Online (Sandbox Code Playgroud)