출처: dplyr 1.0.0 is coming soon
dplyr 1.0.0 버전업 리뷰
dplyr이 0.8.9버전에서 1.0.0버전으로 업데이트를 할 예정이다. tidyverse의 blog를 보니 2020/03/09기준으로 4~6주 후에 CRAN에 등록 된다고 하니 4월 중순에서 말즘이나 되어야 정식 버전을 사용할 수 있을것 같다. 한참남은 정식버전까지 많은것들이 다시 바뀔수 있지만 이번 1.0.0에서의 변경사항에대해 간단하게 적어보려고 한다. 참고한 내용은 다음과 같다.
- Tidyverse blog: dplyr 1.0.0이 곧 업데이트 된다는 소식의 블로그
- dplyr github - NEWS.md: dplyr 1.0.0의 자세한 변경사항
새로운 기능
이번 업데이트에 대표적인 주요 새로운 기능을 소개 하도록 한다.
rowwise()
- 행방향 연산
summarise()
와mutate()
를 대체 할수 있는c_across()
를 선보인다고 한다. 자세한 사항은 다음 링크를 확인해보자.
colwise
- 열방향 연산
summarise()
와mutate()
를 대체 할수 있는across()
를 선보인다고 한다. 자세한 사항은 다음 링크를 확인해보자.
summarise
summarise()이제 단일 요약에서 여러 열 및 / 또는 여러 행을 쉽게 만들 수 있습니다 ?summarise.
summarise()
함수를 이용하여 두개 이상의 요약 정보를 생산할수 있다. 자세한 사항은 다음 링크를 확인해보자.
select
select()
와rename()
함수에서 이제 논리연산자와 class확인 함수를 사용할 수 있다. 자세한 사항은 다음 링크를 확인해보자.
dplyr내부 메커니즘
기존 C++ 기반으로 적용되던 dplyr이 vctrs패키지 기반으로 사용된다고 한다. dplyr에서 vctrs를 사용하면 다음의 장/단점이 있다고 한다.
- 주요 장점
- R에서 훨씬 더 많은 dplyr을 구현할 수있어 프로토 타이핑이 더 빨라지게 된다.
- C++기반의 코드에 의존하지 않기 때문에 BH, Rcpp에 독립할 수가 있다. 기존에 dplyr은 속도를 높히기위해 Rcpp, BH패키지를 같이 사용 했으나 사용하지 않게 된다. 특히 BH패키지는 매우 무겁다.(참고: BH는 Boost C++ Header Files의 줄임말이며 파일이 10,000개가 넘는다.)
- 주요 단점
- C++기반에서 vctrs로 전체적으로 바꾸면서, 미처 발견하지 못한 사소한 오류로 속도가 상당히 느리거나 오류가 있는 코드가 존재할 수 있다.
- 에러가 있다면 깃헙에 이슈제보를 하는것이 좋을것 같다.
물론 C++이 더 좋을 수는 있으나, vctrs를 사용하는 것이 단점보다 장점이 더 크다고 dplyr 개발진은 말하고 있다.
보다 자세한 내용은 vctrs 페이지를 참조.
제거된 함수 목록
이번 1.0.0에 제거되는 함수 목록들이다.
id()
failwith()
tbl_cube()
rbind_all()
rbind_list()
dr_dplyr()
주요 삭제 검토사항
이번 1.0.0에서 개발진이 고지한 관련사항은 다음과 같다.
add_count()
의drop
인자는 출력에 영향을 주지 않기 때문에 제거 예정.add_rownames()
대신tibble::rownames_to_column()
사용as.tbl()
,tbl_df()
대신as_tibble()
사용bench_tbls()
,compare_tbls()
,compare_tbls2()
,eval_tbls()
,eval_tbls2()
은 실용성 문제로 재검토 예정combine()
대신vctrs::vec_c()
사용funs()
대신list()
사용group_by(add = )
대신.add
사용group_by(.dots = )
/group_by_prepare(.dots = )
대신!!!
사용
주요대체 예정사항
do()
는summaris()
로 대체 예정sample_n()
과sample_frac()
는slice_sample()
로 대체 예정top_n()
은slice_min()
과slice_max()
로 대체 예정.- ※:
top_n
은 기존 head()와 같다
- ※: