더북(TheBook)

attach(), detach()

with( ), within( )은 인자로 넘긴 expr 안에서만 데이터 프레임의 컬럼들을 직접 접근할 수 있게 해준다. 반면 attach( ), detach( )는 이들 함수 호출 후 모든 코드에서 컬럼들을 직접 접근할 수 있게 한다.

표 4-29 R 객체와 이름 검색 경로(search path)

attach : 데이터를 R 검색 경로에 추가하여 변수명으로 바로 접근할 수 있게 한다.

attach(
  what # 이름으로 곧바로 접근하게 할 데이터 프레임 또는 리스트
)

detach : 데이터를 R 검색 경로에서 제거한다.

attach(
  what # 제거할 객체
)

search : R 객체에 대한 검색 경로를 반환한다.

search(
)

반환 값은 R 객체를 검색하는 검색 경로다.

다음은 iris를 attach( )하여 iris의 모든 필드를 직접 접근할 수 있게 했다가 detach( )로 해제하는 예다.

> Sepal.Width
Error: object 'Sepal.Width' not found
> attach(iris)
> head(Sepal.Width)
[1] 3.5 3.0 3.2 3.1 3.6 3.9
> detach(iris)
> Sepal.Width
Error: object 'Sepal.Width' not found

이처럼 이름으로 데이터를 곧바로 접근할 수 있게 되는 까닭은 R 객체를 찾는 검색 경로가 attach( )를 통해 수정되기 때문이다. search( )를 사용해보면 attach(iris) 이후 검색 경로의 두 번째에 iris가 추가됨을 볼 수 있다.

> search()
[1]  ".GlobalEnv"        "package:doBy"     "package:MASS"      "package:survival"
[5]  "package:splines"   "tools:rstudio"    "package:stats"     "package:graphics"
[9]  "package:grDevices" "package:utils"    "package:datasets"  "package:methods"
[13] "Autoloads"         "package:base"
> attach(iris)
> search()
[1]  ".GlobalEnv"        "iris"              "package:doBy"     "package:MASS"
[5]  "package:survival"  "package:splines"   "tools:rstudio"    "package:stats"
[9]  "package:graphics"  "package:grDevices" "package:utils"    "package:datasets"
[13] "package:methods"   "Autoloads"         "package:base"
> detach(iris)
> search()
[1]  ".GlobalEnv"        "package:doBy"      "package:MASS"     "package:survival"
[5]  "package:splines"   "tools:rstudio"     "package:stats"    "package:graphics"
[9]  "package:grDevices" "package:utils"     "package:datasets" "package:methods"
[13] "Autoloads"         "package:base"
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.