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"
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.