Mi memoria se está obstruyendo con un montón de archivos intermedios (llámelos temp1, temp2, etc.). ¿Es posible eliminarlos de la memoria sin hacerlo rm(temp1)
, rm(temp2)
uno a la vez? Lo intenté rm(list(temp1, temp2, etc.))
, pero no parece funcionar.
84
rm(list = ls(all = TRUE))
si quieres estar seguro de obtener todo.%>%
? Tales comolist(...) %>% rm(list = .)
list
? Me parece innecesariamente complicado escribir todos los nombres de las variables en lugar de solo TAB autocompletar en la segunda opción.Otra solución es
rm(list=ls(pattern="temp"))
eliminar todos los objetos que coincidan con el patrón.fuente
ls(...)
hizo, pero ahora supongo que es como la función de bash de Unix ls?) - Ups, Josh Paulson usó una variedad específica descrita por @SamTo remove everything in the memory, you can say: rm(list = ls())
pattern="^temp"
solo capturará la variable que comience por "temp", por lo que no la variableABCtemp
.O usando expresiones regulares
"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)
fuente
Otra variación que puede probar es (expandiendo la respuesta de @ mnel) si tiene muchos temp'x '.
aquí "n" podría ser el número de variables temporales presentes
rm(list = c(paste("temp",c(1:n),sep="")))
fuente