source

R의 작업 공간에서 하나를 제외한 모든 개체를 제거하려면 어떻게 해야 합니까?

manycodes 2023. 6. 6. 00:08
반응형

R의 작업 공간에서 하나를 제외한 모든 개체를 제거하려면 어떻게 해야 합니까?

많은 개체가 있는 작업 공간이 있는데 하나를 제외하고 모두 제거하려고 합니다.이상적으로 입력하지 않는 것이 좋습니다.rm(obj.1, obj.2... obj.n)다음과 같이 표시할 수 있습니까?remove all objects but these ones?

다음은 이를 수행하는 간단한 구성입니다.setdiff:

rm(list=setdiff(ls(), "x"))

그리고 완전한 예를 들어보겠습니다.위험을 감수하고 실행 - 다음을 제외한 모든 변수를 제거합니다.x:

x <- 1
y <- 2
z <- 3
ls()
[1] "x" "y" "z"

rm(list=setdiff(ls(), "x"))

ls()
[1] "x"

사용keep의 기능gdata패키지는 매우 편리합니다.

> ls()
[1] "a" "b" "c"

library(gdata)
> keep(a) #shows you which variables will be removed
[1] "b" "c"
> keep(a, sure = TRUE) # setting sure to TRUE removes variables b and c
> ls()
[1] "a"

다른 방법은 RStudio에서 작업 공간을 연 다음 환경의 오른쪽 상단에 있는 grid로 목록을 변경하는 입니다(아래 이미지).그런 다음 지울 개체를 선택하고 마지막으로 지우기를 클릭합니다.

여기에 이미지 설명 입력

저는 비슷하지만 약간 다른 질문에 대한 답을 찾기 위해 몇 시간을 보냈습니다. 저는 소수의 벡터를 제외한 R의 모든 개체(함수 포함)를 삭제할 수 있어야 했습니다.

한 가지 방법:

rm(list=ls()[! ls() %in% c("a","c")])

여기서 제가 유지하고자 하는 벡터는 'a'와 'c'로 명명됩니다.

이것이 동일한 솔루션을 찾는 모든 사람에게 도움이 되기를 바랍니다!

이름이 패턴과 일치하는 모든 개체를 유지하려면 다음을 사용할 수 있습니다.grep이와 같이:

to.remove <- ls()
to.remove <- c(to.remove[!grepl("^obj", to.remove)], "to.remove")
rm(list=to.remove)

교체하다v보관할 개체의 이름과 함께

rm(list=(ls()[ls()!="v"]))

해트팁: http://r.789695.n4.nabble.com/Removing-objects-and-clearing-memory-tp3445763p3445865.html

개체 목록을 유지하려면 다음을 사용할 수 있습니다.

rm(list=setdiff(ls(), c("df1", "df2")))

이는 다음을 활용합니다.ls()pattern유지하지 않으려는 동일한 패턴의 개체가 많은 경우 옵션:

> foo1 <- "junk"; foo2 <- "rubbish"; foo3 <- "trash"; x <- "gold"  
> ls()
[1] "foo1" "foo2" "foo3" "x"   
> # Let's check first what we want to remove
> ls(pattern = "foo")
[1] "foo1" "foo2" "foo3"
> rm(list = ls(pattern = "foo"))
> ls()
[1] "x"
require(gdata)
keep(object_1,...,object_n,sure=TRUE)
ls()

함수 내에서 모든 개체를 rm합니다.함수를 제외한 전역 환경

initialize <- function(country.name) {

  if (length(setdiff(ls(pos = .GlobalEnv), "initialize")) > 0) {
    rm(list=setdiff(ls(pos = .GlobalEnv), "initialize"), pos = .GlobalEnv)
  }

}

환경에서 df를 제외한 모든 개체를 제거하려는 경우:

rm(list = ls(pattern="[^df]"))

다른 방법으로 생각해 봅시다, 만약 우리가 그룹을 제거하고 싶다면요?이것을 시도해 보세요.

 rm(list=ls()[grep("xxx",ls())]) 

저는 개인적으로 화면에 너무 많은 테이블, 변수를 좋아하지 않지만 사용하지 않을 수 없습니다.그래서 저는 임시적인 것들의 이름을 "xxx"로 시작하여 더 이상 사용되지 않은 후에 제거할 수 있도록 이름을 붙입니다.

# remove all objects but selected
rm(list = ls()[which("key_function" != ls())])

이건 어때?

# Removes all objects except the specified & the function itself.

rme <- function(except=NULL){
  except = ifelse(is.character(except), except, deparse(substitute(except)))
  rm(list=setdiff(ls(envir=.GlobalEnv), c(except,"rme")), envir=.GlobalEnv)
}

언급URL : https://stackoverflow.com/questions/6190051/how-can-i-remove-all-objects-but-one-from-the-workspace-in-r

반응형