본문 바로가기

R

1.4 Attach 함수에 대하여

Attach

> DF <- read.csv("example_studentlist.csv")

> attach(DF)

> height

[1] 165.3 170.1 175.0 182.1 168.0 162.0 155.2 176.9 178.5 176.1 167.1 180.0 162.2 176.1 158.2 168.6 169.2

#DF$height이라 안하고 height이라고 바로 써도 변수로 접근이 가능하다.

#주의할 점은 height은 DF와 상관없는 별도 객체이다.

> height[1]

[1] 165.3

> height[1] <- NA

> height[1]

[1] NA

> height

[1] NA 170.1 175.0 182.1 168.0 162.0 155.2 176.9 178.5 176.1 167.1 180.0 162.2 176.1 158.2 168.6 169.2

> head(DF, 1)

name sex age grade absence bloodtype height weight

1 김길동 남자 23 3 유 O 165.3 68.2

#위의 예시처럼 height은 별도 객체로서 생성되고, 이 값을 변동시킨다 한들 실제 DF값에는 영향을 주지 않는다.

왜?

객체를 만들면 객체는 .GlobalEnv (=Global Environment)에 놓이게 된다.

반면, Dataframe의 경우 객체의 이름은 .GlobalEnv에 놓지만, 동시에 새로운 Environment를 형성한다.

Ctrl + Shift + 8 : Show Environment 를 누르면 볼 수 있다.

.GlobalEnv에 DF라는 dataframe의 이름만 들어간 모습

그래서, DF$height이라고 하면, DF라는 Environment에 있는 height에 접근하는 것이고, attach 함수를 사용하면 별도 객체로서 생성이 되는 것임.

ls(DF) : 해당 Env에 있는 객체들의 목록을 보여준다.

> ls(DF)

[1] "absence" "age" "bloodtype" "grade" "height" "name" "sex" "weight"

그렇다면 실제 R에서는 어떤식으로 데이터를 불러오느냐 ?

> search()

[1] ".GlobalEnv" "DF" "tools:rstudio" "package:stats" "package:graphics" "package:grDevices" "package:utils" "package:datasets" "package:methods" "Autoloads" "package:base"

#DF는 attach(DF)로 인해 새로 생성된 것임.

여기서 height를 만약 찾는다면, 제일 먼저 GlobalEnv에서 찾고, 그 후 DF에서 찾고.. 이런식으로 순서대로 찾게된다. 즉, attach 함수는 이 검색 목록에 해당 객체를 집어넣음으로써 접근이 가능하게끔 하는 것이다.

특정 검색목록에 위치시키고 싶다면? : attach(DF, pos=6)

> attach(DF, pos=6)

> search()

[1] ".GlobalEnv" "tools:rstudio" "package:stats" "package:graphics" "package:grDevices" "DF" "package:utils" "package:datasets" "package:methods" "Autoloads" "package:base"

#package를 불러오는 것도, 이 검색목록에 올리는 것이다.

'R' 카테고리의 다른 글

1.3. Dataframe  (0) 2021.07.01
1.2. 데이터에 대해서  (0) 2021.06.29
1. R 기초 : 함수와 객체  (0) 2021.06.27