ls()는 현재 사용하고 있는 객체Object 들의 리스트를 보여준다. (ls: list objects)
만일 이 중에 필요 없는 객체를 지우고 싶다면 rm() 명령을 사용하면 된다. (rm: remove)
여러 개의 객체를 지우려면 콤마(,)로 구분하여 입력한다.
삭제할 개체가 너무 많다면
그 목록을 하나의 벡터로 구성하여 rm()에 넣을 수도 있다.
이럴 때는 [list=] 옵션을 사용한다.
이름에 temp가 들어간 객체들만 지우려면 어떻게 해야 할까?
일단 temp가 들어간 객체들의 이름으로 만들어진 벡터가 있어야 한다.
grep() 은 어떤 벡터에서 주어진 문자열을 포함하는 요소의 번호를 반환한다.
ls() 벡터의 2, 3, 4번 요소가 temp를 포함하고 있다는 얘기다.
그러므로 ls()벡터에서 temp를 포함한 요소만 뽑아서 벡터로 만들려면 ls()[grep("temp", ls())] 와 같이 적어주면 된다.
같은 방법을 어떤 데이터 프레임에서 원하는 문자열이 포함된 행을 뽑을 때도 사용할 수 있다.
예를 들어 다음과 같은 x에서
'app'이 포함된 행만 찾고 싶다면 grep("app", x$name)을 활용하면 된다.
1, 2, 5번째에 있다고 하니, x의 1, 2, 5 행만 다음과 같이 뽑으면 되는 것이다.
참고로 grep()은 정규표현식을 지원한다.
만일 app으로 시작하는 문자를 포함한 행만 뽑고 싶다면
위와 같이 ^를 사용하여 추출하면 된다.
다시 ls()로 돌아가서 temp가 들어간 객체의 삭제를 마무리해 보자.
위와 같이 temp가 들어간 객체들의 이름으로 이루어진 벡터를 얻었으니
이제 이 벡터를 rm()에 넣으면 원하는 벡터만 지울 수 있다.
특정 객체들만 남기고 모든 객체를 삭제하려면?
2016/09/23 - [R] - [R. 아르] 리스트에 없는 항목만 추출하기 (차집합, setdiff()) 에서 본 setdiff()를 이용하면 된다.
다음과 같이 입력하면 ls()에서 x, y, z를 제외한 모든 객체를 출력할 것이므로
이것을 rm()의 [list=]에 넣으면 된다.
팁:
연습삼아 grep()을 이용했지만, 사실 ls() 자체에서 [pattern=] 옵션을 지원한다.
그러므로 가장 짧은 코드는 다음과 같다.
'R' 카테고리의 다른 글
[R.아르] R에서 월별 합계 구하기 / 글자 일부분 자르기 substr() (1) | 2016.10.14 |
---|---|
[R. 아르] 반복되는 값 추가하기 rep() (0) | 2016.10.11 |
[R.아르] 벡터를 아래로 출력하기 cat() (0) | 2016.10.07 |
[R.아르] 일부 글자로 vlookup() 기능 사용하기 pmatch() (0) | 2016.10.04 |
[R.아르] 현재 날짜 가져오기 Sys.Date() (2) | 2016.10.04 |
[R.아르] R의 작업 디렉토리Working Directory 변경하기 (0) | 2016.09.28 |
[R.아르] 찾아바꾸기(2) lapply() / if() (0) | 2016.09.26 |
[R.아르] 찾아바꾸기 gsub() (1) | 2016.09.26 |
[R.아르] 원하는 순서로 데이터 정렬하기 order() (0) | 2016.09.26 |
[R.아르] R에서 피벗테이블 사용하기 dcast() (2) | 2016.09.23 |
댓글