더북(TheBook)

3.4.6 마스킹과 이름 충돌

새 R 세션을 시작하면 기본(base), 통계(stats), 그래픽(graphics) 등 기본 패키지가 자동으로 첨부된다. 이 패키지가 이미 첨부된 상태이므로 base::mean()이나 stats::median()처럼 ::을 사용하거나 base, stats 패키지를 다시 첨부할 필요 없이 mean()median()을 직접 사용하여 수치형 벡터의 평균값과 중간 값을 바로 계산할 수 있다.

실제로 자동으로 첨부된 패키지를 이용하여 함수 수천 개를 즉시 사용할 수 있으며, 각 패키지는 특정 목적에 맞는 수많은 함수를 제공한다. 따라서 두 패키지에 있는 함수가 서로 충돌할 수 있다. 예를 들어 두 패키지 A와 B 모두 X 함수를 갖고 있다 가정하자. A를 첨부한 후 B를 첨부하면 A::X 함수는 B::X 함수로 마스크 처리된다. 즉, A를 첨부하고 X( )를 호출하면 A에 있는 X 함수가 호출된다. 그런 다음 B를 첨부하고 X( )를 호출하면 B에 있는 X 함수가 호출된다. 이 메커니즘을 마스킹이라고 한다. 다음 예제는 마스킹이 발생할 때 어떤 일이 일어나는지를 보여 준다.

강력한 데이터 조작 패키지인 dplyr은 테이블 형식의 데이터를 좀 더 쉽게 조작할 수 있는 함수의 집합을 제공한다. 이 패키지를 첨부하면 기존 함수 가운데 어떤 것이 패키지 함수로 마스킹되는지 보여 주는 메시지를 출력한다.

> library(dplyr)
다음의 패키지를 부착합니다: 'dplyr'

The following objects are masked from 'package:stats':
    filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.