R 프로그래밍 3판 (draft)
2024-11-30
Preface
1판 서문
이 책을 쓰게 된 동기를 설명하기에 앞서 개인적인 경력을 밝히는 것이 좋겠다. 저자는 경영과학과 산업공학을 전공하였기 때문에 대학과 대학원 시절 통계학에 대한 다양한 강의를 수강하였고, Minitab, SPSS, SAS 등의 통계 패키지도 접할 기회를 가졌다. 그러나 정작 졸업 후 경력의 대부분을 IT 업계에서 보내며 통계 분석과는 동떨어진 정보시스템 개발과 컨설팅 업무를 주로 수행하였다. 그러는 과정에서 저자는 C, Java, JavaScript 등의 다양한 프로그래밍 언어를 다루게 되었고 시스템 개발에 대한 폭넓은 이해를 하게 되었다.
세월이 흘러 저자는 박사과정에 진학하여 대학교에 교편을 잡게 되었고, 세상은 바야흐로 빅데이터의 시대로 접어들어 R이 데이터 분석의 강력한 수단으로 각광받게 되었다. 물론 R은 이전부터 통계 전문가들 사이에선 잘 알려져 있었지만, 지금처럼 많은 분야에서 주목받지는 못했다. 이러한 흐름에 맞추어 저자는 여러 해 동안 R을 이용한 통계 분석 및 데이터 마이닝을 공부해 왔고 관련된 강의와 연구 프로젝트도 수행하게 되었다.
이 책은 저자가 R을 공부할 때 느낀 불만족스러운 부분에서 시작되었다. 현재 국내에는 R을 이용하고자 하는 두 부류의 집단이 있는 것 같다. 한 부류는 통계학과 유사 학문을 전공한 사람들로 R에 대해서는 프로그래밍 언어적 측면보다는 데이터 분석 패키지로서 관심이 많다. 이 부류의 사람들은 즉각적인 데이터 분석을 위해 임의적인 방식으로 R의 명령어를 사용하는 것을 선호한다. 다른 부류는 IT 전문가로서 빅데이터 분석에 대한 시대적 요구가 커짐에 따라 R에 관심을 갖게 된 사람들이다. 이들은 통계나 수학적 배경 지식은 약하나 프로그래밍 언어에 대한 이해가 높은 사람들로서, R을 체계적인 방식으로 사용하여 시스템을 구축하는데 관심이 많다. 그런데 국내의 R 관련 서적들은 대부분 R을 통계 분석과 데이터 마이닝 알고리즘을 수행할 수 있는 단편적인 명령어 중심으로 소개하고 있다. R의 프로그래밍 언어로서의 측면을 체계적인 방식으로 다루는 책은 오히려 드문 편이다. 저자가 판단하기에 국내 서적 중 R의 프로그래밍 언어적 측면을 본격적으로 다룬 유일한 책이 Norman Matloff의 The Art of R Programming의 번역본이 아닐까 한다.
다행히 저자는 부족하나마 통계학과 데이터 마이닝에 대한 지식과 경험, 그리고 프로그래밍 언어에 대한 지식과 시스템 개발 경험을 두루 갖출 수 있었다. 물론 두 분야의 전문가가 보면 부족한 수준일 것이다. 그러나 이러한 양 분야의 지식과 경험이 저자에게 R을 매우 종합적으로 조망하게 해 주었다. 그 결과 R을 단순하게 통계 분석의 툴로서만 이용하는 사람들에게 R의 프로그래밍 언어적 특성을 체계적으로 알려주는 게 필요하다고 판단하게 되었다. 왜냐하면, 빅데이터 분석을 위해서는 선진 데이터 분석 알고리즘을 깊이 이해하고 적용하는 것만큼이나, 대규모 데이터를 시스템적으로 처리하는 프로그래밍 기술이 중요해지기 때문이다. 따라서 앞으로 데이터 분석가가 시스템 개발에 직접 참여하게 될 일들이 점차 많아질 것이고, 자신이 가장 익숙한 언어로 프로그램을 개발할 수 있는 능력은 중요한 핵심역량이 될 것이다.
이 책은 통계 및 데이터 마이닝을 공부하는 학생이나 전문가가 R의 프로그래밍 언어적 특성을 이해하는 것을 돕기 위해 집필되었다. 그러나 역으로 프로그래밍 언어에 익숙한 독자가 R의 특성을 파악하는 데에도 도움을 주리라 생각된다. 다른 프로그램 언어에 이미 익숙한 저자로서는 R을 공부할 때 답답했던 측면 중 하나가 R의 프로그램 언어적 특성을 명확하게 설명해 주는 자료가 흔치 않다는 점이었다. R이 기존의 프로그래밍 언어와 다르게 작동되는 부분을 만날 때마다 어리둥절함에 빠질 때가 많았기 때문이다. 이 책은 저자가 몸담고 있는 대학의 강의를 위해 준비했던 자료를 기반으로 원고가 작성되었다. 부족한 지식이나마 책으로 펼칠 수 있도록 격려해 주신 학과 교수님들과, 부족한 강의를 들으며 다양한 피드백을 해준 상명대학교 경영공학과 학생들에게 감사의 말씀을 전한다. 아울러 이 책을 준비할 때 물심양면 지원해준 가족에게도 감사의 말을 전한다.
2017년 2월
상명대학교 천안캠퍼스에서
김길환2판 서문
1판이 출간된지 3년 반이 지났습니다. 1판을 작성하였을 때는 R의 버전이 3이었지만 현재 버전 4가 출시되어 사용되고 있습니다. R의 기본 기능은 크게 바뀌지 않았지만 데이터 프레임의 처리 방식 등에 근본적인 변화가 있었습니다. 아울러 Hadley Wickham의 tidyverse 패키지가 R 작업의 표준으로 자리잡아 가고 있습니다. 2판은 이러한 변화를 반영하였습니다. 기존의 데이터 변환과 관련된 내용을 모두 R의 기본 기능을 사용하는 방식에서 tidyverse 패키지를 사용하는 방식으로 바꾸었습니다. 그래픽과 시각화와 관련된 내용도 R의 기본 graphics 패키지 대신 ggplot2 패키지를 사용하도록 변경하였습니다.
현재까지 2판은 완성되지 않았습니다. 강의와 더불어 2판은 조금씩 수정돼 나갈 것입니다. 온라인 상에서 수정된 내용을 계속 확인하실 수 있습니다. 그러므로 2판의 서문도 계속 바뀌어져 나갈 것입니다.
2020년 8월
상명대학교 천안캠퍼스에서 2판 초안을 마무리하며
김길환2판의 주요 개정 (2022년 7월 이후부터)
- 2022/8/3:
- R 4.2 버전의 변경 사항 반영: if 조건문에서 여러 논리값을 가지는 경우에 대한 내용 변경
- Appendix에 R과 Python 연동 방안 추가
- R 4.2 버전의 변경 사항 반영: if 조건문에서 여러 논리값을 가지는 경우에 대한 내용 변경
- 2022/8/31
- 윈도우즈에서
winget
을 이용한 R 및 RStudio 설치 방법 추가
- 윈도우즈에서
- 2022/10/12
readxl
과writexl
을 이용한 Excel 데이터 읽고 쓰는 방법 추가- 6.6 절 예제로 사용된 파일을 본문에 첨부
- 2023/3/13
dplyr
패키지의slice
함수에 대한 설명 추가
- 2023/11/29
- 9 장에 데이터 열의 형식 바꾸기 추가
- 2023/12/14
- B 장에 파일 및 폴더 관련 R 명령어 추가
3판 서문
3 판에서 가장 큰 변화는 책을 크게 R 프로그래밍 기초와 R 프로그래밍 응용 편으로 나눈 것입니다. R 프로그래밍 기초 편은 2 판의 구성과 동일합니다. 단지 바뀐 부분은 6.6과 6.7 절에서 Excel 파일과 관련 내용을 12.2.1 절로 옮긴 것뿐입니다. R 프로그래밍 응용 편은 이 판에서 새롭게 추가된 부분으로, R을 이용하여 데이터를 수집하고 분석하는 방법을 다룹니다. R 프로그래밍 응용 편의 장들은 하나씩 작성 중이기 때문에 작성이 완료될 때마다 추가될 예정입니다.
일러두기
절의 제목 뒤에
*
표시가 있는 절은 처음 R을 접하는 초심자는 건너뛰어도 되는 내용들이다. 이러한 절들은 R의 프로그래밍 언어로서의 특징과 세부사항을 더 잘 이해하고 싶은 독자들을 위한 내용이다.이 책은 R의 프로그래밍 언어적 특성을 주로 다루고 있다. R을 이용한 통계분석 방법을 배우기를 원하는 독자는 졸저 R을 이용한 통계 분석이나 다른 책 등을 참고하기 바란다.