Review/도서 리뷰

[도서 리뷰] 효율적인 R프로그래밍

어쩌다통계 2022. 10. 19. 00:42
728x90

효율적인 R 프로그래밍

시간이 나면 틈틈이 서점에 들르곤 하는데, 머신러닝을 공부하면서 R 프로그램 입문자를 위한 책들은 많이 보았지만 지금 소개하는 "효율적인 R 프로그래밍"은 조금은 딥?한 내용을 다루고 있어 안 살 수가 없었다.

 

사실 R로 몇 년간 분석을 해왔지만, 효율화보다는 어떤 패키지를 써서 분석을 하고 시각화할 지에 관한 고민이 99.99999%였다.

0.00001%만큼은 좀더 효율적으로 짤 수 있을 것 같은데... 하고 고민은 했으나 항상 시간에 쫓기며 코드를 짜다 보니 효율화까지 생각할 여유가 없었다.

이 책은 이런 나를 위한? 내가 안 살 수 없는 책이었다.

 

결론은 추천!이다. 하지만  필요한 부분만 자세히 읽고 구현하다 보니 굳이 이 책을 사야 했나... 싶다.

(비록 32000원을 주고 사서 봤지만 원문은 이미 깃헙에 오픈되어 있으니 먼저 읽어보고 나는 이걸 꼭 한글로 봐야겠다! 싶은 분들만 사시길...https://csgillespie.github.io/efficientR/index.html)

 

 

예를 들어, ifelse()보다 if(){}else{}가 훨~씬 빠르다던가, 함수를 C++로 던져서 돌린다거나, 데이터 파악할 때 tibble 패키지를 사용하면 좋다... 등의 아주 구체적인 가이드가 나온다.

.Rprofile 파일 활용

이 외에도 아주 깜찍한 기능들도 있는데 위의 캡처한 사진처럼 R 프로그램을 열 때마다, 시작 문구+명언?을 띄워서 마치 R이 나를 반기는 기분을 느낄 수 있다.

덜 복잡하고 빠른 프로그래밍을 위해 나를 대신해 속도를 비교해줘서 최적화된 방법을 알려준다는 점에서 아주 추천할만하다. 앞으로 두고두고 읽을 예정!

 

아래는 책을 읽으면서 발견한 꿀팁들을 정리해두었다.

패키지 #패키지의 도움말 문서 목록 출력
vignette()
vignette(package="dplyr", "dplyr")

#R업데이트
installr::updateR()

#PKG load
pkgs = c("data.table","dplyr")
lapply(pkgs, library, character.only=TRUE)

#모든 PKG update
update.packages(ask="FALSE")
성능 측정 library(benchmarkme)

get_linear_algebra()
res = benchmark_std() #R성능 평가를 위한 다양항 테스트 진행해줌

#function 속도 측정
library("microbenchmark")
df = data.frame(v = 1.4, name = letters[1:4])
microbenchmark(df[3,2], df[3,"name"], df$name[3]) #unit = "s": second
환영 인사 setwd(Sys.getenv("HOME"))
file.edit("~/.Rprofile")

message("Hi! TongGyeSaRam")

if(interactive())
  try(fortunes::fortune(), silent=TRUE)
효율화를 위한 꿀팁 #가능한 벡터를 미리 할당한 다음 값을 채우자!
#똑같은 계산은 한번만! (cached)
#ifelse(data,"PASS","FAIL") 보다 if(조건){"PASS"}else{"FAIL"}이 10배 빠르다
#sort(data, radix:기수정렬)
#상위10개만 필요하다 --> sort(x, partial = 1:10)
#factor --> numeric : as.numeric(levels(f))[f]
#논리형 AND(&), OR(|)는 벡터 비교시 사용, && ||은 하나 값만 비교할 때 사용
#매트릭스가 데이터프레임보다 빠르다!
#parallel패키지로 멀티코어 CPU 병렬처리 사용가능하다!
#소스개수 알아보기
systeminfo | findstr 프로세서
wmic cpu get NumberOfCores
wmic cpu get NumberOfLogicalProcessors
여러줄 주석처리 crtl +shift + c

 

  효율적인 R 프로그래밍국내도서저자 : 콜린 길렙시(Colin Gillespie),로빈 러브레이스(Robin Lovelace) / R Korea 번역팀역출판 : 느린생각 2018.06.05상세보기

 

반응형