Moja pamięć jest zapychana przez kilka plików pośrednich (nazwij je temp1, temp2 itd.). Czy można je usunąć z pamięci bez robienia tego rm(temp1)
, rm(temp2)
pojedynczo? Próbowałem rm(list(temp1, temp2, etc.))
, ale to nie działa.
Moja pamięć jest zapychana przez kilka plików pośrednich (nazwij je temp1, temp2 itd.). Czy można je usunąć z pamięci bez robienia tego rm(temp1)
, rm(temp2)
pojedynczo? Próbowałem rm(list(temp1, temp2, etc.))
, ale to nie działa.
Odpowiedzi:
Ustaw listę jako wektor znaków (nie wektor nazw)
rm(list = c('temp1','temp2'))
lub
rm(temp1, temp2)
rm(list = ls(all = TRUE))
jeśli chcesz mieć pewność, że dostaniesz wszystko.
%>%
? Na przykładlist(...) %>% rm(list = .)
list
? Wydaje mi się niepotrzebnie skomplikowane wpisywanie wszystkich nazw zmiennych zamiast tylko autouzupełniania TAB w drugiej opcji.
Inne rozwiązanie rm(list=ls(pattern="temp"))
, usuń wszystkie obiekty pasujące do wzorca.
pattern="^temp"
złapie tylko zmienną zaczynającą się od „temp”, więc nie zmienną ABCtemp
.
Lub używając wyrażeń regularnych
"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)