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