시간이 나면 틈틈이 서점에 들르곤 하는데, 머신러닝을 공부하면서 R 프로그램 입문자를 위한 책들은 많이 보았지만 지금 소개하는 "효율적인 R 프로그래밍"은 조금은 딥?한 내용을 다루고 있어 안 살 수가 없었다.
사실 R로 몇 년간 분석을 해왔지만, 효율화보다는 어떤 패키지를 써서 분석을 하고 시각화할 지에 관한 고민이 99.99999%였다.
0.00001%만큼은 좀더 효율적으로 짤 수 있을 것 같은데... 하고 고민은 했으나 항상 시간에 쫓기며 코드를 짜다 보니 효율화까지 생각할 여유가 없었다.
이 책은 이런 나를 위한? 내가 안 살 수 없는 책이었다.
결론은 추천!이다. 하지만 필요한 부분만 자세히 읽고 구현하다 보니 굳이 이 책을 사야 했나... 싶다.
(비록 32000원을 주고 사서 봤지만 원문은 이미 깃헙에 오픈되어 있으니 먼저 읽어보고 나는 이걸 꼭 한글로 봐야겠다! 싶은 분들만 사시길...https://csgillespie.github.io/efficientR/index.html)
예를 들어, ifelse()보다 if(){}else{}가 훨~씬 빠르다던가, 함수를 C++로 던져서 돌린다거나, 데이터 파악할 때 tibble 패키지를 사용하면 좋다... 등의 아주 구체적인 가이드가 나온다.
이 외에도 아주 깜찍한 기능들도 있는데 위의 캡처한 사진처럼 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 |
'Review > 도서 리뷰' 카테고리의 다른 글
[도서 리뷰] 코드 밖 커뮤니케이션 (7) | 2024.10.17 |
---|---|
[도서 리뷰] Introducing MLOps, MLOps 도입가이드 part2 (0) | 2022.10.27 |
[도서 리뷰] Introducing MLOps, MLOps 도입가이드 part1 (0) | 2022.10.27 |
[도서 리뷰] 핸즈온 비지도 학습 | 3장 차원축소 (1) | 2022.10.19 |
[도서 리뷰] XAI 설명 가능한 인공지능, 인공지능을 해부하다 (1) | 2022.10.19 |