작업 공간에서 몇 가지 특정 객체 만 지우려면 어떻게해야합니까?


161

작업 공간에서 일부 데이터를 제거하고 싶습니다. "모두 지우기"버튼을 누르면 모든 데이터가 제거됩니다. 그러나 특정 데이터 만 제거하고 싶습니다.

예를 들어 데이터 섹션에 다음 데이터 프레임이 있습니다.

data
data_1
data_2
data_3

나는 제거 할 것인지 data_1, data_2그리고 data_3유지하면서 data.

나는 data_1 <- data_2 <- data_3 <- NULL데이터를 제거하는 (내 생각에는) 시도 했지만 여전히 작업 영역 영역에 유지하므로 완전히하고 싶은 것은 아닙니다.

답변:


247

당신은 입력하여 답변을 찾을 수 있습니다 ?rm

rm(data_1, data_2, data_3)

44
모든 변수를 삭제하려면을 사용할 수 있습니다 rm(list=ls()).
larkee

1
그러나 명령 줄없이 GUI로 어떻게 할 수 있습니까? Revolution R
에서처럼

1
이름이 문자 A로 시작하는 모든 변수를 제거하려면 'A001', 'A002'.... 'A999'라고 말하십시오. 변수 이름을 너무 많이 입력하고 싶지 않습니다. 감사!
user3768495

2
@mbask의 답변을 사용하십시오 (아래). rm(list = ls()[grep("A", ls())])
Pop

74

명명 된 객체 전체를 제거하는 유용한 방법 :

rm(list = ls()[grep("^tmp", ls())])

이름이 "tmp"로 시작하는 모든 객체를 제거합니다.

편집 : Gsee의 의견에 따라 pattern인수 를 사용하십시오 .

rm(list = ls(pattern = "^tmp"))

편집 : 객체의 하위 집합 만 유지하는 한 가지 방법은 Rafael 주석에 응답하여 유지하려는 데이터의 이름을 특정 패턴으로 지정하는 것입니다. 예를 들어, 이름으로 시작하지 않는 모든 객체를 제거 paper하려면 다음 명령을 실행하십시오.

rm(list = grep("^paper", ls(), value = TRUE, invert = TRUE))

7
lspattern인수를 받아들이 므로 다음과 같이 단순화 할 수 있습니다.rm(list=ls(pattern="^tmp"))
GSee

1
별도로 사용 value=TRUE하면 grep...을 입력하면 입력 내용을 저장할 수 있습니다.
GSEE

안녕하십니까, 일부 데이터를 유지하고 다른 데이터를 제거하는 방법이 있습니까? 건배
Rafael

1
안녕하세요! R 환경에서 두 가지 패턴을 어떻게 유지할 수 있습니까? "rm (list = grep ("^ paper "|"ObjectExample ", ls (), value = TRUE, invert = TRUE))")를 시도했습니다. 아는 사람 있나요?
Dekike

1
다음과 같은 pattern논거에 정규 표현식을 포함시켜야합니다 grep.rm(list = grep("^paper|ObjectExample", ls(), value = TRUE, invert = TRUE))
mbask

15

다음 명령이 수행됩니다

rm(list=ls(all=TRUE))

2
이뿐만 아니라, 작업 공간에서 모든 것을 제거하는 것 data1, data2그리고 data3(즉, data제거 너무). 그것이 당신이 원하는 것이면 괜찮습니다 ...
Phil

2
그리고 지구 환경에서 함수, 값 또는 다른 객체가 아닌 데이터 만 제거하려면 어떻게해야합니까?
Nikos Alexandris

8

다음 명령을 사용하십시오

remove(list=c("data_1", "data_2", "data_3"))

6

apropos부분 이름을 사용하여 객체를 찾는 데 사용되는 기능을 사용할 수 있습니다 .

rm(list = apropos("data_"))

3

변수 그룹 중 하나를 제거하려는 경우 목록을 작성하고 필요한 변수 만 유지할 수 있습니다. rm 함수는 "데이터"를 제외한 모든 변수를 제거하는 데 사용할 수 있습니다. 스크립트는 다음과 같습니다.

0->data
1->data_1
2->data_2
3->data_3
#check variables in workspace
ls()
rm(list=setdiff(ls(), "data"))
#check remaining variables in workspace after deletion
ls()

#note: if you just use rm(list) then R will attempt to remove the "list" variable. 
list=setdiff(ls(), "data")
rm(list)
ls()

3

RStudio를 사용하는 경우 rm(list = ls())접근 방식을 사용하지 않는 것이 좋습니다 ! * 대신 Ctrl+ Shift+를 자주 사용하는 워크 플로우를 구축해야합니다.F10 당신의 R 세션을 다시 시작하는 바로 가기를. 이는 현재 사용자 정의 변수 세트를 압축하고로드 된 패키지, 장치 등을 지우는 가장 빠른 방법입니다.이 습관을 채택하면 작업의 재현성이 현저하게 증가합니다.

참조 이 우수한 스레드 (주요 요점은 내가 이미 언급 한 내용에 의해 캡처)보다 철저한 논의를위한 Rstudio 커뮤니티 (H / t @kierisi을).

rm"트릭"으로 시작한 스크립트 이후에 처음 몇 년간의 R 코딩 기능을 갖춘 스크립트를 인정해야합니다. 저는이 답변을 R 경력을 시작한 다른 사람들에게 조언으로 쓰고 있습니다.

* 물론 이것에 대한 합법적 인 용도가 attach있지만 초보자는 나중에 그 다리를 건너 훨씬 더 나은 서비스를받을 것입니다 (IMO).


3
  1. RStudio에서 Environment탭이 Grid(아님 List) 모드 인지 확인하십시오 .

  2. 환경에서 제거 할 개체를 선택하십시오.

  3. 빗자루 아이콘을 클릭하십시오.


2
paste0("data_",seq(1,3,1)) 
# makes multiple data.frame names with sequential number
rm(list=paste0("data_",seq(1,3,1))
# above code removes data_1~data_3

1

모든 데이터를 지우려면 :

를 클릭하십시오 Misc>Remove all objects.

잘가요

콘솔을 지우려면 :

를 클릭하십시오 edit>Clear console.

코드가 필요 없습니다.


1
내가해야했지만 Session> Clear Workspace....
Peter K.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.