책 소개
요약
R, Not only statistical analytic tool!
오픈소스 R은 흔히 데이터 분석에 사용된다. 하지만 R은 이런 딱딱한 계산만을 위한 도구가 아니다.Dynamic & Reproducible 이 책은 R과 관련 패키지를 활용해 데이터에서 결과물까지 다이내믹한 방법으로 문서를 만드는 방법을 소개한다.
One source, Multi-format outputs 하나의 소스파일을 사용해 자신이 원하는 워드, PDF, HTML, 웹 사이트, 웹 북, 대시보드, 웹 애플리케이션을 만드는 방법을 설명한다.
From Docker Container To Cloud 분석하고 계산하여 종이와 유사 매체로 결과를 보고하는 것에서 벗어나, 다양한 형태의 웹 콘텐츠를 생산할 수 있어 다이내믹 데이터 시각화 등도 쉽게 구현해 낼 수 있다.
이 책에서 다루는 내용
■ 데이터에서 결과물까지 모든 것을 연결
■ RStudio, 니터, 알마크다운, 팬독
■ R Shiny를 활용한 웹 애플리케이션 제작
■ 인터랙티브 데이터 시각화를 위한 자바스크립트 라이브러리를 R 패키지로 변환하는 htmlwidgets
■ 클라우드에서의 R 사용법
■ 도커(Docker) 컨테이너에서의 R과 RStudio, Shiny 사용법
이 책의 특징
■ 최소한의 R 코드 사용
■ 통계를 넘어선 넓은 차원의 R 사용법
■ R 재현 가능 연구 도구와 관련된 최신의 내용까지 망라
■ 오피스웨어에 갖힌 사고의 틀 해방
■ 하나의 소스파일로 생각할 수 있는 모든 문서 생산: 워드 문서, 웹 페이지, PDF, 웹 사이트, 대시보드, 웹 애플리케이션, 웹 북 등
■ 학생, 작가, 연구자, 개발자까지 모두를 위한 R 활용서
이 책의 구성
제 1부: 다이내믹 문서
제 1부에서는 이 책에서 소개하는 방법의 원리와 그것을 가능하게 해 주는 중요한 니터, 알마크다운 R 패키지, 팬독을 설명한다. 그리고 이런 기능들을 잘 활용할 수 있는 작업 공간을 마련해 주는 RStudio 통합 개발 환경에 대해 설명한다. 간단한 문서를 사용하여 가볍게 시작할 수 있도록 하였다.
제 2부: 다양한 포맷의 문서
제 2부는 제 1부에서 설명한 원리를 사용하여 가장 기본이 되는 문서 포맷을 설명한다. 하나의 보고서를 작성하는 경우에는 이렇게 하나의 파일로 이루어진 문서들이 유용할 것이다. 이런 문서들을 모아 웹 사이트나 웹 북 등과 같이 복잡한 문서들도 만들 수 있기 때문에 기본 내용들을 잘 숙지하는 것이 좋다. 이 밖에도 우리 주변에서 흔히 사용되는 HTML, PDF, Word 문서를 만드는 방법과 조금 생소할 수도 있는 프레젠테이션 만드는 방법을 설명한다.
제 3부: 인터랙티브 툴(shiny와 htmlwidgets)
제 3 부에서는 사용자 인터랙티브 툴을 소개한다. R을 사용하여 강력한 웹 애플리케이션을 구현할 수 있는 샤이니(Shiny) 패키지를 자세하게 설명한다. 이 책에서 샤이니에 관련된 모든 것을 설명할 수는 없지만 비교적 최근까지 개발된 내용을 정리하여 설명한다. 샤이니를 Rmd 파일에 포함시켜 사용하는 방법도 자세하게 소개한다.
최근 들어 데이터 시각화의 중요성과 맞물려 데이터 시각화와 관련된 수많은 자바스크립트 라이브러리들이 개발되었다. 이 책에서는 이런 자바스크립트 라이브러리들을 R 패키지로 만드는 htmlwidgets 패키지의 원리를 간략하게 소개했다. htmlwidgets으로 개발된 패키지들은 매우 많기 때문에 일일이 설명하기 어렵다. 하지만 이는 해당 패키지 자료를 참고하면 되기 때문에 이 책에서는 그 원리만 설명했다.
제 4부: 복합 문서
제 4부에서는 제 2부에서 다룬 기본적인 포맷들을 바탕으로 좀 더 복잡한 것들을 만드는 방법을 소개한다. 그 예로는 웹 사이트, 깃북과 같은 웹 북, 대시보드 등을 들 수 있다.
제 5부: 클라우드와 도커에서 R의 사용
제5 부에서는 R을 클라우드에서 사용하는 방법을 설명한다. 이 책에서는 대부분 웹과 관련된 내용을 다루고 있는데, 이런 것들은 개인 컴퓨터를 넘어 인터넷, 클라우드 환경에서 사용될 때 더욱 큰 가치를 지닌다. 비록 엔터프라이즈 수준의 환경에는 못 미치지만 그렇게 되기 위한 연습은 될 수 있을 것이라 생각한다.
또한 제5 부에서는 도커 환경에서 R을 사용하는 방법을 설명한다. 도커는 컨테이너라는 개념을 사용하여 마이크로 환경에서 소프트웨어들이 실행될 수 있는 환경을 제공한다. 이런 기능들은 클라우드 등으로 옮겨 사용할 수도 있다. 이런 연습을 통해 R을 좀 더 넓은 환경에서 사용하는 개념을 이해할 수 있을 것이라 생각한다.
목차
목차
- 1부. 다이내믹 문서
- 1장. 다이내믹 문서의 기초와 RStudio 통합 개발 환경
- 다이내믹 문서
- 다이내믹 문서 제작의 원리
- 코드와 텍스트를 섞어 사용
- 두 번의 컴파일
- 재현 가능 저술의 간단한 역사
- 다이내믹 문서 제작 환경 설정
- 처음 만드는 다이내믹 문서
- .Rmd 파일 생성
- 소스파일과 렌더링 결과 비교하기
- 다이내믹 문서를 위한 RStudio 활용
- 새로운 .Rmd 파일 생성
- 전체 문서의 목차와 접기 기능
- RStudio 프로젝트 기능
- 깃 버전 관리
- 엑셀 등에서 데이터 읽기
- 필요한 파일로 바로 이동
- servr 패키지를 사용한 자동 렌더링과 리로딩
- 다이내믹 문서 제작에 대한 정보
- 이 책이 다루는 범위와 필요한 배경 지식
- 정리
- 다이내믹 문서
- 2장. Rmd 소스파일로 시작하기
- YAML 헤더
- 문서 포맷을 정하는 output 필드
- 코드 청크
- 마크다운 텍스트
- 문서의 렌더링 다시 보기
- YAML 헤더, rmarkdown::render(), 템플릿
- 문서 변환기로서의 팬독
- 어떻게 마스터할 것인가?
- 비전문가의 R을 포함한 컴퓨터 학습(나의 경험)
- R 언어를 시작하는 방법
- 웹의 언어 배우기
- 정리
- YAML 헤더
- 3장. 니터 패키지
- 니터 패키지의 개괄적인 기능
- 코드 청크
- 문서를 렌더링할 때 실행되는 R 세션
- 니터 객체, 패턴, 훅의 개념
- 니터의 옵션
- 청크 옵션의 역할과 그것을 이해하는 방법
- 청크 옵션 설정법
- 문서 전체에 적용되는 청크 옵션 설정 방법
- 프로젝트 파일 전체에 적용되는 청크 옵션 설정 방법
- 패키지 옵션
- 소스 코드와 관련된 옵션들
- 소스 코드 실행
- 소스 코드 출력
- 텍스트 출력에 영향을 미치는 옵션들
- 에러, 경고 등의 처리
- 플롯을 조절하는 옵션들
- 그래픽 시스템과 그래픽 디바이스
- 이미지 저장 장소와 파일 이름
- 이미지 크기
- 이미지의 캡션
- 이미지 링크
- 이미지 배치
- 저장된 이미지들의 출력
- 사진 등 일반 이미지 넣기
- 한글이 들어간 플롯
- .Rnw(레이텍 + 니터)에서의 플롯 옵션들
- 니터 패키지에 들어 있는 유틸리티 함수들
- 표 만들기: kable() 함수 등
- 이미지, 웹사이트, 샤이니 앱 넣기 위한 함수
- 동적 콘텐츠에 대한 스크린샷
- 정리
- 니터 패키지의 개괄적인 기능
- 4장. 팬독
- 팬독 문서 변환기
- 팬독 마크다운
- YAML 헤더
- 단락(Paragraphs)
- 제목(Headers)
- 블록 인용
- 있는 그대로(Verbatim)
- 행 블록(Line blocks)
- 목록(Lists)
- 정의 목록(Definition List)
- 수평선(Horizontal rules)
- 표(Tables)
- 백슬래시 이스케이프
- 스마트 문장기호
- 인라인 포맷팅
- 윗첨자, 아랫첨자
- 수식
- HTML, 레이텍 직접 쓰기(Raw)
- 링크
- 그림 삽입
- 주석 달기
- 참고 문헌과 인용 표시
- 정리
- 2부. 다양한 포맷의 문서
- 5장. HTML 문서와 R 노트북
- HTML 문서
- output 필드
- 목차와 제목
- 탭으로 구분되는 섹션
- 이미지 조정
- 코드와 관련된 옵션들
- 문서의 스타일과 관련된 옵션들
- .Rmd 소스 파일
- 코드 하일라이트
- 하나의 독립된 파일로
- 중간 마크다운 파일 유지
- 보조 파일 부르기
- 공유하는 output 필드
- 사용자 정의 템플릿 사용하기
- 팬독 커맨드라인 옵션
- R 노트북
- RStudio에서 노트북 사용하기
- 결과물의 저장
- 파라미터를 가진 .Rmd 문서
- 정리
- HTML 문서
- 6장. WORD 문서
- 워드 문서 포맷 지정하기
- 목차
- 워드 포맷 스타일 지정하기
- 레퍼런스 워드 문서에 스타일 입히기
- 레퍼런스 워드 파일 사용
- 스타일 이외의 설정
- 워드 파일에 참고 문헌 삽입
- 워드 포맷에서의 표
- 여러 파일로 나눠 작업하기
- 번호 부여와 목차
- 정리
- 7장. PDF 문서
- .Rnw와 .Rmd의 차이
- 출력 포맷과 레이텍 엔진
- 프리앰블(Preamble) 구성하기
- 한글 사용
- 목차, 목차의 깊이, 번호
- 그림과 관련된 옵션
- 코드 하일라이트
- 중간 .tex 파일 남기기
- 공유 출력 템플릿 옵션
- 정리
- 8장. 프레젠테이션
- 슬라이드 구성을 위한 팬독 문법
- ioslides 프레젠테이션
- 제목 처리
- 로고 삽입
- 슬라이드 레벨 정하기
- 목록의 순차적 표시
- 와이드 스크린 모드.
- 슬라이드 전환 속도
- 폰트를 작게
- 커스텀 CSS
- 표 만들기
- 슬라이드 레이아웃 설정하기
- 텍스트의 색
- reveal.js 웹 프레젠테이션
- RStudio에서 revealjs 시작하기
- 슬라이드 레벨과 reveal.js의 특징
- 슬라이드 내용 상하정렬, 테마, 이동, 배경 조절하기
- 슬라이드 배경 조절하기
- 그림 크기 조절
- 커스텀 CSS 설정법
- 오리지널 reveal.js의 옵션 설정
- 플러그인의 사용
- Beamer PDF 슬라이드
- 정리
- 3부. 샤이니 웹 애플리케이션과 htmlwidgets 패키지
- 9장. Shiny 웹 애플리케이션의 기초
- 샤이니 패키지란?
- 패키지 설치, 작업 환경, 유용한 정보원
- 처음으로 만들어 보는 샤이니 앱
- 샤이니 앱의 작동 방식
- 샤이니 반응성 프로그래밍
- 샤이니 패키지에서 사전 정의된 주요 객체와 서버함수
- 샤이니 앱 코딩 패턴
- 샤이니 앱의 여러 가지 형태
- 01_hello 앱에 대해
- 전통적 복수 파일을 사용한 샤이니 앱
- 하나의 파일로 작성하는 샤이니 앱
- .Rmd 파일에서 사용하는 샤이니 앱
- 샤이니 작성의 실제 워크플로(개인적인 권고사항)
- 샤이니를 위한 R 언어 지식
- 비표준 함수
- 대화형에서는 잘 사용되지 않는 함수들
- 정리
- 샤이니 패키지란?
- 10장. 샤이니 반응성 프로그래밍
- 입력 위젯
- 숫자 입력용 위젯
- 문자열 입력 위젯
- 항목 중에서 선택
- 날짜, 파일 등 특수한 입력 위젯
- actionButton 위젯
- 결과 출력
- 출력에 관여하는 서버 함수들과 사용자 인터페이스 함수들
- 그래프 출력
- 표로 출력하기
- 텍스트 출력
- 입력과 출력을 반응성으로 연결하기
- 샤이니 반응성 관계의 성립
- 가장 간단한 체인
- 반응성 표현식이 필요한 경우
- 정리
- 입력 위젯
- 11장. 샤이니 반응성 프로그래밍
- 반응성 프로그래밍 모델
- 샤이니 반응성 객체
- 반응성 체인: 반응성 소스, 반응성 종점
- 반응성 표현식과 관찰자
- 반응성 메커니즘 차근차근 이해하기
- 연결된 코드의 상태
- 코드가 실행되는 과정
- 반응성 로그 시각화 툴 사용하기
- 서버 코드의 실행과 변수의 스코프
- 반응성 체인의 조절
- isolate() 함수
- observeEvent(), eventReactive() 함수
- reactiveValues() 함수
- 반응성 함수들의 이용 사례
- 정리
- 반응성 프로그래밍 모델
- 12장. 샤이니 애플리케이션 레이아웃
- 부트스트랩 그리드 시스템 이해하기
- 샤이니 레이아웃 함수의 개념
- fluidPage와 행, 열의 배치
- sidebarLayout 사용
- 탭셋과 내비게이션 바
- 샤이니 테마 사용
- 정적인 콘텐츠의 구성
- HTML 템플릿 사용
- 전체 페이지 형태의 HTML 템플릿
- 페이지의 일부 컴포넌트로 사용
- 정리
- 13장. 샤이니 인터랙티브 플롯
- 샤이니 플롯 인터랙션의 기초
- 정적인 플롯에 대한 인터랙션 사례
- 두 번째 사례
- 플롯에서 값 읽기
- 활용하기
- 14장. htmlwidgets 프레임워크
- htmlwidgets 패키지란?
- htmlwidgets로 패키지를 만드는 방법
- 기본 순서
- htmlwidgets로 hello world 출력 패키지 개발
- sigma.js 라이브러리를 R 패키지로 만들어 보기
- 원래의 라이브러리 사용법 익히기
- R 패키지로 변환해 보기
- htmlwidgets 패키지의 사용
- 정리
- 4부. 복합 문서
- 15장. 정적인 웹사이트
- 간단하게 만들어 보는 웹사이트
- 웹사이트 만드는 과정
- _site.yml 파일
- _output.yml 파일에 출력 포맷 정의
- 콘텐츠 넣기
- 서버에 올리기
- 정리
- 16장. 대시보드
- 패키지 설치하고 사용하기
- 대시보드 레이아웃의 기초
- 컴포넌트: ###과 하나의 열
- 열 또는 행의 구분: ----- 또는 ##
- 탭셋: {.tabset}
- 페이지 구분: ==== 또는 #
- 특수한 레이아웃
- 크기 결정
- 컴포넌트의 폭과 높이가 결정되는 방법
- 패딩(padding)
- 컴포넌트: 실질적인 콘텐츠
- htmlwidgets
- 정적인 R 플롯
- 표
- 밸류 박스
- 게이지
- 내비게이션 바
- 주석 텍스트
- 대시보드 스타일, 로고, 파비콘 등
- flexdashboard에서 샤이니 앱 사용하기
- 샤이니 사용을 위한 기본
- 플렉스 박스에 맞춘 샤이니 앱
- flexdashboard에 샤이니 앱을 적용한 사례들
- 정리
- 17장. 책을 위한 북다운 패키지
- bookdown 패키지 설치
- 깃북(gitbook) 실제로 만들어 보기
- 중요한 역할을 하는 세 가지 파일
- _bookdown.yml: 전체 프로젝트 정의
- index.Rmd 파일의 YAML 헤더
- _output.yml에서 출력 포맷 결정
- 북다운 패키지의 렌더링 과정의 이해
- 책에 들어가는 콘텐츠
- 장절의 구성
- 상호 참조 만들기
- 그림에 대한 상호 참조
- 표에 대한 상호 참조
- 다른 장, 절에 대한 상호 참조
- 북다운에서 확장된 환경들과 상호 참조
- 국제화
- 책의 출력 포맷
- 깃북 스타일
- bookdown.org 사이트
- 정리
- 5부. 클라우드와 도커
- 18장. 클라우드 환경에서 R 사용하기
- DigitalOcean 가입과 가상 서버 만들기
- 회원가입
- 가상 서버(드롭플릇) 만들기
- 가상 서버에 로그인하기
- 그 다음에 할 일
- 우분투 가상 서버(드롭플릿)에 R과 R 패키지 설치
- 드롭플릿에 RStudio 서버, 레이텍, Shiny 서버 설치하기
- RStudio Server 설치
- Shiny 서버 프로그램 설치
- 레이텍 설치
- 가상 서버에 NGINX HTTP 서버 설치하기
- 서버에 파일을 올리기
- 도메인 구입과 네임 서버 설정
- 서버 프로그램들의 사용법
- RStudio 서버의 사용
- Shiny Server 관리
- 엔진엑스 HTTP 서버 관리
- 엔진엑스로 리버스 프록시 설정
- 정리
- DigitalOcean 가입과 가상 서버 만들기
- 19장. 도커 환경에서 R, RStudio 사용
- 도커(Docker) 배우기
- 까다롭다고 느껴질 수 있는 개념
- rocker 프로젝트
- rocker와 기본 도커 명령들
- rocker/r-base 사용
- rocker/rstudio 사용
- rocker/shiny 사용하기
- 데이터 볼륨과 실행 컨테이너에 접근
- rocker/hadleyverse와 재현 가능 저술 환경 구축
- 도커 파일(Dockerfile) 다루기
- 도커를 사용하여 웹 서버 설치하기
- 정리