1장 시작하기 ___1.1 R 실행하기 ______1.1.1 인터랙티브 모드 ______1.1.2 배치 모드 ___1.2 첫 번째 R 세션 ___1.3 함수 소개 ______1.3.1 변수의 범위 ______1.3.2 기본 인수 ___1.4 중요한 R 데이터 구조 예습하기 ______1.4.1 R의 일꾼, 벡터 ______1.4.2 문자열 ______1.4.3 행렬 ______1.4.4 리스트 ______1.4.5 데이터 프레임 ______1.4.6 클래스 ___1.5 확장 예제: 시험 성적을 회귀 분석하기(1) ___1.6 시작과 종료 ___1.7 도움말 사용하기 ______1.7.1 help() 함수 ______1.7.2 example() 함수 ______1.7.3 무엇을 찾는지 정확하게 모르는 경우 ______1.7.4 다른 주제들에 대한 도움말 ______1.7.5 배치 모드에서의 도움말 ______1.7.6 인터넷 도움말
2장 벡터 ___2.1 스칼라, 벡터, 배열, 행렬 ______2.1.1 벡터에 원소 추가 또는 삭제하기 ______2.1.2 벡터의 길이 파악하기 ______2.1.3 행렬과 배열을 벡터처럼 사용하기 ___2.2 선언 ___2.3 재사용 ___2.4 일반 벡터 연산 ______2.4.1 벡터의 산술 및 논리 연산 ______2.4.2 벡터 인덱싱 ______2.4.3 연산자로 유용한 벡터 생성하기 ______2.4.4 seq()를 이용해 벡터 순서 생성하기 ______2.4.5 rep()을 이용해 숫자 반복 벡터 만들기 ___2.5 all()과 any() 사용하기 ______2.5.1 확장 예제: 1이 연달아 나오는 부분 찾기 ______2.5.2 확장 예제: 이산적 시계열값 예측하기 ___2.6 벡터화 연산 ______2.6.1 벡터 입력과 출력 ______2.6.2 벡터 입력, 행렬 출력 ___2.7 NA와 NULL값 ______2.7.1 NA 사용하기 ______2.7.2 NULL 사용하기 ___2.8 필터링 ______2.8.1 필터링된 인덱스 생성하기 ______2.8.2 subset() 함수로 필터링하기 ______2.8.3 선택 함수 which() ___2.9 벡터화 된 조건문: ifelse() 함수 ______2.9.1 확장 예제: 연관성 측정 ______2.9.2 확장 예제: Abalone 데이터 세트 기록하기 ___2.10 벡터 동일성 테스트 ___2.11 벡터 원소의 이름 ___2.12 c() 이상의 것
3장 행렬과 배열 ___3.1 행렬 만들기 ___3.2 일반 행렬 연산 ______3.2.1 행렬에서 선형대수 연산 처리 ______3.2.2 행렬 인덱싱 ______3.2.3 확장 예제: 이미지 다루기 ______3.2.4 행렬 필터링 ______3.2.5 확장 예제: 공분산 행렬 생성하기 ___3.3 행렬의 행과 열에 함수 적용하기 ______3.3.1 apply() 함수 사용하기 ______3.3.2 확장 예제: 아웃라이어 탐색 ___3.4 행렬에 행과 열 추가 및 제거하기 ______3.4.1 행렬 크기 바꾸기 ______3.4.2 확장 예제: 그래프에서 서로 거리가 가장 가까운 두 점 찾기 ___3.5 벡터/행렬을 더 정확히 구분하기 ___3.6 의도하지 않은 차원 축소 피하기 ___3.7 행렬의 행과 열에 이름 붙이기 ___3.8 고차원 배열
4장 리스트 ___4.1 리스트 생성하기 ___4.2 일반 리스트 연산 ______4.2.1 리스트 인덱싱 ______4.2.2 리스트에 원소를 추가하고 삭제하기 ______4.2.3 리스트의 크기 확인하기 ______4.2.4 확장 예제: 텍스트 일치 확인하기(1) ___4.3 리스트 구성요소와 값에 접근하기 ___4.4 리스트에 함수 적용하기 ______4.4.1 lapply()와 sapply() 함수 사용하기 ______4.4.2 확장 예제: 텍스트 일치 확인하기(2) ______4.4.3 확장 예제: 다시 Abalone 데이터 사용하기 ___4.5 재귀 리스트
5장 데이터 프레임 ___5.1 데이터 프레임 생성하기 ______5.1.1 데이터 프레임에 접근하기 ______5.1.2 확장 예제: 시험 성적을 회귀 분석하기(2) ___5.2 기타 행렬 방식 연산 ______5.2.1 부분 데이터 프레임 추출하기 ______5.2.2 NA 값을 다루는 추가적 방법들 ______5.2.3 rbind()와 cbind() 및 관련 함수 사용하기 ______5.2.4 apply() 적용하기 ______5.2.5 확장 예제: 월급 연구 ___5.3 데이터 프레임 결합하기 ______5.3.1 확장 예제: 직원 데이터베이스 ___5.4 데이터 프레임에 함수 적용하기 ______5.4.1 데이터 프레임에 lapply()와 sapply() 사용하기 ______5.4.2 확장 예제: 로지스틱 회귀 모델 적용하기 ______5.4.3 확장 예제: 중국어 사투리 공부 도와주기
6장 팩터와 테이블 ___6.1 팩터와 레벨 ___6.2 팩터에 사용되는 일반적인 함수 ______6.2.1 tapply() 함수 ______6.2.2 split() 함수 ______6.2.3 by() 함수 ___6.3 테이블 사용하기 ______6.3.1 테이블로 행렬/배열 연산하기 ______6.3.2 확장 예제: 부분 테이블 추출하기 ______6.3.3 확장 예제: 테이블에서 가장 큰 셀 찾기 ___6.4 그 밖의 팩터 및 테이블 관련 함수 ______6.4.1 aggregate() 함수 ______6.4.2 cut() 함수
7장 R 프로그래밍 구조 ___7.1 조건문 ______7.1.1 반복문 ______7.1.2 벡터 이외의 유형을 사용하는 반복문 ______7.1.3 if-else ___7.2 산술 및 불리언 연산 및 값 ___7.3 인수의 기본값 ___7.4 반환값 ______7.4.1 명시적으로 return()을 호출할지 판단하기 ______7.4.2 복잡한 객체 반환하기 ___7.5 함수는 객체다 ___7.6 환경 설정 및 범위 문제 ______7.6.1 최상위 레벨 환경변수 ______7.6.2 범위 계층 구조 ______7.6.3 ls() 좀 더 살펴보기 ______7.6.4 함수는 거의 부작용이 없다 ______7.6.5 확장 예제: 호출 프레임의 내용을 보여주는 함수 ___7.7 R에는 포인터가 없다 ___7.8 위층에 쓰기 ______7.8.1 고급 할당 연산자를 이용한 지역 외 변수 사용하기 ______7.8.2 assign()을 이용해 지역 외 변수 사용하기 ______7.8.3 확장 예제: R에서의 이산 사건 시뮬레이션 ______7.8.4 광역 변수는 언제 사용해야 하나? ______7.8.5 클로저(Closure) ___7.9 재귀 ______7.9.1 퀵소트 구현 ______7.9.2 확장 예제: 바이너리 서치 트리 ___7.10 교체 함수 ______7.10.1 교체 함수를 사용할 때 고려해야 하는 사항 ______7.10.2 확장 예제: 자동 부기 벡터 클래스 ___7.11 함수 코드 작성용 도구 ______7.11.1 텍스트 에디터와 통합 개발 툴 ______7.11.2 edit() 함수 ___7.12 자신만의 바이너리 연산자 사용하기 ___7.13 무기명 함수
8장 R에서 수학과 시뮬레이션 하기 ___8.1 수학 함수 ______8.1.1 확장 예제: 확률 계산 ______8.1.2 누적 합과 곱 ______8.1.3 최소값과 최대값(복수 가능) ______8.1.4 미적분 ___8.2 통계 분포를 위한 함수 ___8.3 정렬 ___8.4 벡터와 행렬의 선형 대수 연산 ______8.4.1 확장 예제: 벡터 외적 ______8.4.2 확장 예제: 마코브 체인(Markov Chain)의 고정 분포 찾기 ___8.5 집합 연산 ___8.6 R에서 시뮬레이션 프로그래밍 하기 ______8.6.1 내장 랜덤 변수 생성기 ______8.6.2 반복 수행 시에 동일한 랜덤 연속값 얻기 ______8.6.3 확장 예제: 조합 시뮬레이션
9장 객체 지향 프로그래밍 ___9.1 S3 클래스 ______9.1.1 S3 제네릭 함수 ______9.1.2 예제: 선형 모델 함수 lm()에서 OOP ______9.1.3 제네릭 메소드 실행 내역 찾기 ______9.1.4 S3 클래스 작성하기 ______9.1.5 상속 사용하기 ______9.1.6 확장 예제: 위 삼각 행렬 저장 클래스 ______9.1.7 확장 예제: 다항 회귀 분석 과정 ___9.2 S4 클래스 ______9.2.1 S4 클래스 작성하기 ______9.2.2 S4 클래스에서 제네릭 함수 구현하기 ___9.3 S3 대 S4 ___9.4 객체 관리하기 ______9.4.1 ls() 함수를 사용해 객체 나열하기 ______9.4.2 rm() 함수를 사용해 특정 객체 제거하기 ______9.4.3 save() 함수를 사용해 객체들을 저장하기 ______9.4.4 “이건 뭐지?” ______9.4.5 exists() 함수
10장 입력과 출력 ___10.1 키보드와 모니터에 접근하기 ______10.1.1 scan() 함수 사용하기 ______10.1.2 readline() 함수 사용하기 ______10.1.3 화면에 출력하기 ___10.2 파일 읽고 쓰기 ______10.2.1 파일에서 데이터 프레임이나 행렬 읽어오기 ______10.2.2 텍스트 파일 읽기 ______10.2.3 커넥션 입문 ______10.2.4 확장 예제: PUMS 통계 파일 ______10.2.5 URL을 통해 원격으로 파일에 접속하기 ______10.2.6 파일에 쓰기 ______10.2.7 파일과 디렉터리 정보 얻기 ______10.2.8 확장 예제: 많은 파일의 내용의 합 ___10.3 인터넷에 접근하기 ______10.3.1 TCP/IP 개요 ______10.3.2 R의 소켓 ______10.3.3 확장 예제: 병렬처리 R 구현하기
11장 문자열 처리 ___11.1 문자열 처리 함수 개요 ______11.1.1 grep() ______11.1.2 nchar() ______11.1.3 paste() ______11.1.4 sprint() ______11.1.5 substr() ______11.1.6 strsplit() ______11.1.7 regexpr() ______11.1.8 gregexpr() ___11.2 정규 표현식 ______11.2.1 확장 예제: 주어진 확장자의 파일명 테스트 ______11.2.2 확장 예제: 파일명 구성하기 ___11.3 디버깅 도구 edtdbg에서 문자열 관련 기능 사용하기
12장 그래픽 ___12.1 그래프 만들기 ______12.1.1 R 기본 그래픽의 주요 담당자: plot() 함수 ______12.1.2 선 추가하기: abline() 함수 ______12.1.3 기존 것을 유지한 상태로 새 그래프 그리기 ______12.1.4 확장 예제: 한 화면에 두 개의 밀도 추정 그래프 나타내기 ______12.1.5 확장 예제: 다항 회귀 예제 ______12.1.6 점 추가: points() 함수 ______12.1.7 범례 추가: legend() 함수 ______12.1.8 텍스트 추가: text() 함수 ______12.1.9 위치 찾기: locator() 함수 ______12.1.10 그래프 복구 ___12.2 그래프 꾸미기 ______12.2.1 문자 크게 조절: cex 옵션 ______12.2.2 축의 범위 바꾸기: xlim과 ylim 옵션 ______12.2.3 다각형 추가. polygon() 함수 ______12.2.4 선의 곡선화: lowess()와 loess() 함수 ______12.2.5 명시적 함수 그래프화 ______12.2.6 확장 예제: 곡선의 일부를 확대하기 ___12.3 그래프를 파일에 저장하기 ______12.3.1 R 그래픽 장치 ______12.3.2 출력된 그래프 저장하기 ______12.3.3 R 그래픽 장치 닫기 ___12.4 3차원 그래프 생성하기
13장 디버깅 ___13.1 디버깅의 기본 원칙 ______13.1.1 디버깅의 기본: 확인 원칙 ______13.1.2 작은 것부터 시작하기 ______13.1.3 모듈식, 하향식 디버깅 ______13.1.4 버그 예방 ___13.2 왜 디버깅 도구를 사용할까? ___13.3 R 디버깅 기능 사용하기 ______13.3.1 debug()와 browser() 함수를 사용한 개별 단계 살펴보기 ______13.3.2 브라우저 명령어 사용하기 ______13.3.3 중단점 설정하기 ______13.3.4 trace() 함수로 추적하기 ______13.3.5 충돌 발생 후 traceback()과 debugger() 함수를 사용해 확인하기 ______13.3.6 확장 예제: 두 가지의 전체 디버깅 과정 ___13.4 국제적인 움직임: 보다 편리한 디버깅 도구 ___13.5 시뮬레이션 코드 디버깅에서의 일관성 보장하기 ___13.6 구문 및 런타임 오류 ___13.7 R 자체에서 GDB 실행하기
14장 성능 향상: 속도와 메모리 ___14.1 빠른 R 코드 작성하기 ___14.2 반복문에 대한 두려움 ______14.2.1 속도 향상을 위한 벡터화 ______14.2.2 확장 예제: 몬테카를로 시뮬레이션의 속도를 향상시키기 ______14.2.3 확장 예제: 멱행렬 생성하기 ___14.3 함수형 프로그래밍과 메모리 문제 ______14.3.1 벡터 할당 문제 ______14.3.2 복사 후 변경 문제 ______14.3.3 확장 예제: 메모리 복사 피하기 ___14.4 코드에서 느린 부분을 찾을 때 사용하는 Rprof() ______14.4.1 Rprof()를 사용한 모니터링 ______14.4.2 Rprof()의 작동 원리 ___14.5 바이트 코드 컴파일 ___14.6 데이터가 메모리에 들어가지 않아요! ______14.6.1 청킹 ______14.6.2 메모리 관리를 위한 R 패키지 사용하기
15장 타 언어와 R을 인터페이스하기 ___15.1 R에서 호출하는 C/C++ 함수 작성하기 ______15.1.1 R을 C/C++과 연동할 때의 선행지식 ______15.1.2 예제: 정사각 행렬에서 부분 대각행렬 추출 ______15.1.3 컴파일하고 코드 실행하기 ______15.1.4 R/C 코드 디버깅하기 ______15.1.5 확장 예제: 이산 시계열값 예측 ___15.2 파이썬에서 R 사용하기 ______15.2.1 RPy 설치하기 ______15.2.2 RPy 문법
16장 병렬 R ___16.1 상호 아웃링크 문제 ___16.2 snow 패키지 소개 ______16.2.1 snow 코드 실행하기 ______16.2.2 snow 코드 분석하기 ______16.2.3 어느 정도의 속도 향상이 가능할까 ______16.2.4 확장 예제: K-평균 클러스터링 ___16.3 C 사용하기 ______16.3.1 멀티코어 사용하기 ______16.3.2 확장 예제: OpenMP에서의 상호 아웃링크 문제 ______16.3.3 OpemMP 코드 실행하기 ______16.3.4 OpenMP 코드 분석 ______16.3.5 다른 OpenMP 프라그마 ______16.3.6 GPU 프로그래밍 ___16.4 성능에 대해 일반적으로 고려할 사항 ______16.4.1 과부하의 원인 ______16.4.2 당황스러운 병렬 어플리케이션과 그렇지 않은 어플리케이션의 차이 ______16.4.3 정적 할당 대 동적 할당 ______16.4.4 소프트웨어 연금술: 일반적인 문제를 당황스러운 병렬 문제로 바꾸기 ___16.5 병렬 R 코드 디버깅하기
부록 AR 설치하기 ___A.1 CRAN에서 R 내려 받기 ___A.2 리눅스 패키지 매니저를 사용해 설치하기 ___A.3 소스 파일로 설치하기
부록 B 패키지 설치 및 사용 ___B.1 기본 패키지 ___B.2 하드 디스크에서 패키지 불러오기 ___B.3 웹에서 패키지 다운로드하기 ______B.3.1 자동으로 패키지 설치하기 ______B.3.2 수동으로 패키지 설치하기 ___B.4 패키지 내의 함수 리스트 보기