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 |