rm ()으로 여러 객체 제거


84

내 기억은 많은 중간 파일 (temp1, temp2 등)로 인해 막히고 있습니다. 그것은하지 않고 메모리에서 제거 할 수 있습니다 rm(temp1), rm(temp2)한 번에 하나씩? 시도 rm(list(temp1, temp2, etc.))했지만 작동하지 않는 것 같습니다.

답변:


123

목록을 문자형 벡터로 만듭니다 (이름 벡터가 아님).

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

또는

rm(temp1, temp2)

3
메모리에있는 모든 것을 제거하려면 다음과 같이 말할 수 있습니다. rm (list = ls ())
Sam

5
rm(list = ls(all = TRUE))모든 것을 얻으려면 @Sam .
Dason

1
작동합니까 %>%? 같은list(...) %>% rm(list = .)
량산

그것의 장점이 무엇인지 설명해 주시겠습니까 list? 두 번째 옵션에서 TAB 자동 완성 대신 모든 변수 이름을 입력하는 것이 불필요하게 복잡해 보입니다.
laviex

112

다른 해결책 rm(list=ls(pattern="temp"))은 패턴과 일치하는 모든 개체를 제거하는 것입니다.


설명 여기에 (내가 알고하지 않았다 조쉬 폴슨 ls(...)?했지만 지금은 그게 유닉스 bash는 기능 LS처럼 생각) - 야아하는 소리는, 조쉬 폴슨 @Sam에 의해 설명 된 특정의 다양한 사용To remove everything in the memory, you can say: rm(list = ls())
레드 완두콩

이것은 잘 작동하지만 작은 버그가있을 수 있습니다 .'ABCtemp '라는 이름의 개체가있는 경우에도 제거됩니다. 'temp'로 시작하는 개체를 제거하고 'ABCtemp'를 유지하려면 어떻게해야합니까?
user3768495

8
패턴에 더 많은 기준을 추가하기 만하면됩니다. 예를 들어 pattern="^temp"는 "temp"로 시작하는 변수 만 포착하므로 변수는 포착하지 않습니다 ABCtemp.
Alan

1
또 다른 가능성은 여기 @BrodieG에 의해 주어진 대답 stackoverflow.com/questions/21677923/...
녹색 DIOD

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

시도 할 수있는 또 다른 변형은 temp'x '가 많은 경우 (@mnel의 답변 확장)입니다.

여기서 "n"은 존재하는 임시 변수의 수입니다.

rm(list = c(paste("temp",c(1:n),sep="")))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.