pull() : Extract a single column

$ 연산자와 비슷한 함수
dplyr
Author

chichead

Published

October 1, 2022

Today Function : pull

오늘의 함수는 dplyr 패키지의 pull() 함수입니다.
pull() 함수는 $ 연산자와 비슷한 기능을 합니다.
$ 연산자는 R에서 데이터 객체의 특정 부분을 추출할 때 사용하는데요.
pull() 함수는 파이프 연산자 내에서 $보다 사용하기 편리하다는 장점이 있습니다.


Usage

pull(.data, var = -1, name = NULL, ...)


Argument

.data : data.frame, tibble을 넣을 수 있습니다. 거기에 dbplyr, dtplyr package의 data.table backend도 가능합니다.
var : 추출할 변수의 이름을 넣습니다. 숫자도 가능한데 양수는 왼쪽부터 순서, 음수는 오른쪽부터 순서를 나타냅니다.
name : 변수 이름을 알 경우엔 name이라는 파라미터를 써도 됩니다.


Value

입력한 데이터와 동일한 사이즈의 vector가 나옵니다.


Example

library(dplyr)

# mtcars 데이터를 가지고 pull() 함수의 예를 들어보겠습니다.
# mtcars 데이터의 구조는 이러합니다.
head(mtcars)
                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
# -1을 입력하면 mtcars 데이터의 맨 오른쪽 칼럼인 carb가 나옵니다
mtcars |> pull(-1)
 [1] 4 4 1 1 2 1 4 2 2 4 4 3 3 3 4 4 4 1 2 1 1 2 2 4 2 1 2 2 4 6 8 2
# 칼럼 명 'carb'을 바로 써도 같은 결과가 나옵니다
mtcars |> pull(carb)
 [1] 4 4 1 1 2 1 4 2 2 4 4 3 3 3 4 4 4 1 2 1 1 2 2 4 2 1 2 2 4 6 8 2


select vs pull

dplyr에 있는 또다른 비슷한 함수인 select와의 차이점은 뭘까요? 일단 결과 값이 다릅니다.
pull은 단일 열을 벡터로 변환해 결과로 내보냅니다. 반면 select는 하나 이상의 열을 데이터프레임으로 변환하죠.

fruits <- data.frame(orange = 1:5, lemon = 5:1)

# select를 써서 orange 열(1개의 열)을 가져오면 data.frame이 나옵니다
fruits |> select(orange) |>str()
'data.frame':   5 obs. of  1 variable:
 $ orange: int  1 2 3 4 5
# 이번엔 pull을 이용하면 int value가 들어간 벡터가 나옵니다
fruits |> pull(orange) |> str()
 int [1:5] 1 2 3 4 5
# data.frame에서 pull과 의미가 동일한 함수 -> .[, "name"]
fruits %>% .[ , "orange"] %>% str()
 int [1:5] 1 2 3 4 5