tidyverse 특집 / R과 magrittr

dplyr을 써보신 분은 알겠지만, %>% 연산자는 대단히 편리합니다. 이 기능은 패키지 magrittr에서 나온 것입니다.

연쇄

가령 다음과 같이 OLS 회귀를 간결하게 표현할 때도 쓸 수 있습니다.

library(magrittr)
attitude %>%
  lm(learning~previleges,data=.) %>%
  stargazer(type='text')

결과는,
===============================================
                        Dependent variable: 
                    ---------------------------
                             learning       
-----------------------------------------------
privileges                   0.473***       
                              (0.158)       
                                             
Constant                     31.222***       
                              (8.591)       
                                             
-----------------------------------------------
Observations                    30           
R2                             0.243         
Adjusted R2                    0.216         
Residual Std. Error      10.390 (df = 28)   
F Statistic            9.006*** (df = 1; 28) 
===============================================
Note:               *p<0.1; **p<0.05; ***p<0.01

할당

값을 계산한 다음 원래 변수로 덮어 쓰려면? 보통

x=sort(abs(x))

라고 하는 표현을

x %<>%abs%<>%sort

이렇게 하면 됩니다.

예를 보겠습니다.

값을 꺼내 사용하기

예를 들어 다음과 같은 코드가 있다고 합시다.

mean(attitude$learning)

magrittr을 사용하면 다음과 같이 표현할 수 있습니다.

attitude %$%
  mean(learning)

%>%와 %T>%의 차이

%>%의 경우, 앞의 내용을 그 다음 함수가 첫번째 인수로 쓰지만, %T>%는 앞의 내용을 아예 함수의 입력값 전체로 받아들이기 때문에 뒤에 걸리는 체인은 함수의 이름만 와도 결과가 표현됩니다. 또한, 이 실행 앞의 내용이 체인 다음으로 직접 연결됩니다. 예를 보겠습니다.

rnorm(200) %>%
  matrix(ncol=2 )%T>%
  plot %>%
  colSums()

결과를 보면 그림도 나오고(plot 실행), colSums()의 값도 계산이 됩니다. 만약 %T>% 대신에 %>%를 사용하면 plot()의 내용이 colSums()로 전달되어 에러가 발생됩니다.




댓글

이 블로그의 인기 게시물

Bradley-Terry Model: paired comparison models

R에서 csv 파일 읽는 법