Top

R에서 객체지향 프로그래밍 사용하기 [R 언어 기초부터 객체지향 개념(S3, S4 클래스)과 사례 연구까지]

  • 원서명R Object-Oriented Programming (ISBN 9781783986682)
  • 지은이켈리 블랙(Kelly Black)
  • 옮긴이정사범
  • ISBN : 9788960778825
  • 20,000원
  • 2016년 07월 29일 펴냄
  • 페이퍼백 | 228쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 데이터 과학

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/r-object-oriented-programming)

요약

이 책은 데이터 분석 언어로 널리 사용되고 있는 R 언어의 능력을 제대로 활용하기 위해 필요한 프로그래밍 기술을 이해하고 학습하는 데 도움을 주기 위한 실용서다. R 언어의 기본 지식을 이해하고 있는 사람이라면 이 책을 통해 본인의 프로그래밍 역량을 객체지향 프로그래밍 관점에서 한 단계 더 업그레이드할 수 있다. R과 객체 지향 프로그래밍에 대해 이해하고, 예제를 통해 R 언어에 적용하는 과정을 학습하여 R 언어로 객체지향 프로그래밍을 설계하고 구현하는 방법을 완전히 이해해보자.

이 책에서 다루는 내용

■ R의 기본적인 데이터 유형 및 구조

■ 일반 업무를 표현하는 데 도움이 되는 기본 명령과 도구들

■ 알고리즘 구현을 위한 R의 기본 제어 구조 사용 방법

■ S3와 S4 클래스의 사용 및 개발

■ S3와 S4 클래스 간의 차이 이해

■ 일반 문제를 해결하기 위한 다양한 아이디어 획득

■ R을 통한 객체지향 프로그래밍의 기본 설계 및 접근법

이 책의 대상 독자

이 책은 프로그래밍에 익숙하고 R 환경에 대한 기본적인 이해를 갖추었으며 R 언어를 사용한 프로그래밍 애플리케이션 구현 방법을 배우고자 하는 사람에게 적합하다. 따라서 여러분이 이미 R 환경을 경험했으며 R의 기본을 이해하고 있다고 가정한다. 이 책은 독자가 소프트웨어 애플리케이션 개발에 익숙하다고 가정하기 때문에 구체적인 접근이나 실행 목적을 가진 광범위한 독자들에게 동기 부여를 하지는 않는다.

이 책의 구성

여러 장에 걸쳐 설명할 내용은 다음과 같다. 처음 세 개의 장은 주로 시스템에 데이터를 불러오는 것과 관련된 기본 요구 사항과 데이터 연관 계산 시 가장 기본적인 업무에 중점을 두고 설명한다. 다음 세 개의 장은 여러 데이터 형식을 다루는 기술을 포함해 데이터를 살펴보거나 데이터로 작업할 때 실제로 발생하는 여러 가지 이슈 사항에 중점을 둔다. 그다음 세 개의 장은 기본 및 고급 프로그래밍 주제를 다룬다. 마지막 세 개의 장은 문제를 해결하는 데 여러 아이디어를 결합하는 방법을 설명하기 위해 좀 더 상세한 예제를 제공한다

1장, ‘데이터 형식’에서는 다양한 데이터 형식에 대해 설명한다. float, double, complex, factors, integer 같은 기본 표현을 포함한다. 또한 대화식 셸(shell)에서 벡터를 입력하는 방법에 대해 예를 들어 설명한다. 가장 기본적인 운영에 대한 설명과 R 셸과 상호작용하는 방법도 설명한다.

2장, ‘데이터 구조화’에서는 R 환경에서 데이터를 조직화하는 방법에 대해 좀 더 상세히 설명한다. 추가적으로 데이터를 접근하는 방법과 다양한 데이터 구조에 대한 기본 연산을 수행하는 방법을 설명한다. 조사 대상인 주요 데이터 구조에는 lists, arrays, tables, data frames가 있다.

3장, ‘데이터 저장과 결과 출력하기’에서는 데이터를 R 환경으로 가져오기 위한 방법에 대해 2장에서 설명한 주제를 기반으로 상세히 살펴본다. 또한 데이터를 저장하는 방법과 결과를 표시하는 방법에 대해서도 설명한다.

4장, ‘확률과 랜덤 숫자 계산하기’에서는 확률에 대한 상세한 연구와 R 언어의 샘플링 특성을 제공한다. R 환경은 데이터 분석 방법에 도움을 주는 다양한 특성을 갖고 있다. 모든 통계분석은 확률에 근거하므로 무시할 수 없는 주제다. 다양한 확률과 샘플링 옵션은 R 언어의 장점 중 하나며 이 장에서는 몇 가지 옵션을 알아본다.

5장, ‘문자와 문자열 연산’에서는 문자열에 대한 조사, 테스트, 연산 수행이 가능한 다양한 옵션을 설명한다. 이러한 주제는 데이터 세트가 일관적이지 않은 경우가 잦아 중요한 주제다. 게다가 파일에서 데이터를 읽는 루틴은 몇 가지 기본 검토를 필요로 한다.

6장, ‘시간 변수의 변환과 정의’에서는 시간 데이터 구조를 상세하게 설명한다. 기본 설명은 1장에서 다루었고 6장에서는 좀 더 상세한 내용을 다룬다. 시간 관련 데이터는 그 수가 점점 많아져 더 이상 무시할 수 없는 중요한 데이터 구조가 되었다.

7장, ‘기본 프로그래밍’에서는 가장 기본적인 흐름 제어와 R 언어의 프로그래밍 특성에 대해 상세히 살펴본다. 또한 조건부 실행과 다양한 반복 구조에 대해 상세 내용을 제공한다. 추가로 프로그램 작성, 실행 및 포맷팅과 연관된 일반적인 주제에 대해서도 설명한다.

8장, ‘S3 클래스’에서는 S3 클래스에 대한 상세 내용을 설명한다. 이 내용은 객체지향 프로그래밍에 대한 첫 번째이자 가장 일반적인 접근법이다. S3 클래스의 사용은 이미 객체지향 프로그래밍에 익숙한 사람들에게는 혼란스러울 수 있다. 하지만 유연성 때문에 S3 클래스는 R에서 객체지향 프로그래밍 접근법으로 가장 유명해졌다.

9장, ‘S4 클래스’에서는 S4 클래스에 대해 상세하게 설명한다. S3 클래스와 비교하면 S4 클래스는 객체지향 프로그래밍에 대한 좀 더 새로운 접근법이다. 이것은 한층 더 구조적인 접근법이기도 하며 객체지향 프로그래밍 관련 경험을 가진 사람들에게 더 익숙하다.

10장, ‘사례연구: 과정 등급’에서는 등급-추적 애플리케이션의 심층적인 사례를 제공한다. 총 세 가지의 사례 중 첫 번째로, 가장 간단한 사례다. 많은 사람들에게 익숙한 내용을 선택했다. ##예제를 제공하는 것이 아니라 등급-추적 애플리케이션의 세 가지 예를 10, 11, 12장을 통해 설명하는 것 같습니다.

11장, ‘사례연구: 시뮬레이션’에서는 몬테카를로 시뮬레이션(Monte-Carlo Simulation)에 근거해 데이터를 생성하는 데 사용되는 애플리케이션 사례를 제공한다. 또한 시뮬레이션을 실행하고 결과를 체계화하며 결과에 대한 기본 분석을 실행하는 데 사용하는 환경을 생성하기 위해 객체지향 접근 방법이 사용되는 방법을 보여준다.

12장, ‘사례연구: 회귀분석’에서는 여러분이 회귀분석을 수행하기 위해 사용할 수 있는 다양한 옵션을 제공하는 애플리케이션 사례를 제공한다. 회귀분석은 다양한 상황에서 발생하는 일반적인 작업이다. 개발된 이 애플리케이션은 객체지향 접근법의 사용을 보여줄 수 있는 방법으로써 연속형과 서수형 데이터를 융통성 있게 처리하는 방법을 보여준다. 여러분은 이 장의 내용을 팩트출판사 홈페이지(https://www.packtpub.com/sites/default/files/downloads/6682OSCaseStudy_Regression.pdf)에서 다운로드할 수 있다.

부록, ‘패키지 관리’에서는 패키지 설치, 갱신, 제거에 대해 간략히 소개한다. 패키지는 R의 분석 능력을 확장하기 위해 추가할 수 있는 라이브러리다. R을 확장하며 다른 라이브러리를 사용할 수 있는 점은 좀 더 강력한 특징에 해당한다.

저자/역자 소개

지은이의 말

R 환경(R environment)은 벨 연구소에서 개발한 강력한 소프트웨어 제품군으로 S 언어를 모델로 하여 시작하였다. 초기 코드 기본(Code base)은 1993년 로스 이하카(Ross Ihaka)와 로버튼 젠틀맨(Robert Gentleman)이 개발했다. R은 여러 지원자들의 도움으로 급격히 성장했으며, 이후로 통계 계산의 표준이 되었다. 소프트웨어 제품군 자체가 언어를 구현하는 것을 넘어 잘 성장했고 ‘분석 환경’이 되어버렸다. 이것은 확장 가능하며 다양한 분야의 패키지로, 계속해서 인기를 끄는 강력한 자원이 될 수 있을 것이다.
이 책의 목적은 R 언어를 사용해 프로그래밍을 위한 자원을 제공하는 것이며, 여러분이 코드를 실행하고 테스트하기 위해 R 환경을 사용한다고 가정한다. 이 책은 대략 네 부분으로 나뉜다. 첫 번째 부분에서는 R이 데이터를 분류하는 방법과 데이터에서 계산을 하는 데 사용할 수 있는 옵션을 이해하기 위해 필요한 기본 아이디어와 주제에 대해 설명한다. 두 번째 부분에서는 R이 데이터를 체계화하는 방법과 데이터를 추적하고 표시하며 읽고 저장하는 데 사용 가능한 옵션에 대해 설명한다. 세 번째 부분에서는 R 언어에 특화된 프로그래밍 주제와 객체지향 프로그래밍에 사용 가능한 옵션에 대해 설명한다. 네 번째 부분에서는 여러 문제를 해결하는 데 적합한 주제를 설명하기 위해 몇 가지 확장된 사례를 살펴본다.

지은이 소개

켈리 블랙(Kelly Black)

클락슨 대학(Clarkson University)의 수학과 교원이다. 스펙트럼 방법과 확률미분방정식의 사용에 중점을 둔 수치해석이 전문 분야다. 특히 몬테카를로 시뮬레이션 결과 분석 분야에 R을 폭넓게 사용하고 있다.
연구 분야에서 R을 사용할 뿐만 아니라 R 환경을 통계 클래스에도 사용 중이며, 강의실에도 R을 적용하는 등 다양한 경험을 갖고 있다. 데이터 세트를 탐색하기 위해 R을 사용하는 것이 강의의 큰 비중을 차지한다.

옮긴이의 말

내가 R 언어를 알게 된 지 어느덧 10년 정도 되었다. 그 때만 하더라도 R을 다룬 책은 외국 서적이 대부분이었고 관련 자료 중 대부분이 공식 R 사이트에서 제공한 매뉴얼 형태의 pdf 파일이었던 것으로 기억한다. 하지만 최근에는 R 언어와 관련된 국내 서적만 검색해보아도 수십 종에 달할 것으로 짐작된다. 아마 최근 몇 년간 출간된 데이터 분석 관련 도서들 중에서 R과 관련된 책이 가장 많은 비율을 차지하지 않을까 생각한다. 이처럼 R과 관련된 다양한 책들이 쏟아져 나오고 있다는 사실은 데이터 분석가들 가운데 상당수가 R을 사용하고 있으며, 데이터 분석 분야에 종사하기를 희망하는 학생들 또한 R에 관심이 많다는 것을 입증한다고 볼 수 있다.
전 세계적으로 R 언어 사용자가 늘어남에 따라 다양한 종류의 관련 책들이 나오고 있다. 물론 인터넷상에서 구할 수 있는 자료의 수와 종류도 최근 들어 다양해지는 것이 사실이다. 이 책은 이러한 추세를 감안해 R 언어의 기초를 간략하게 소개하고 R에서 어떻게 객체지향 프로그래밍을 할 수 있을지에 대한 내용을 소개한다. R에 대한 기본 내용을 익히고 나서 고급 기술을 더 배우고자 하는 분들에게 이 책은 큰 도움이 될 것이다. 특히나 R 언어의 객체지향 프로그래밍을 설명한 책은 찾아보기가 쉽지 않을 뿐 아니라 인터넷상에서도 관련 자료를 쉽게 구할 수 없다는 측면에서, 이 분야에 관심이 많은 분들에게 이 책이 어느 정도 정보를 제공하는 기회가 될 수 있으므로 기쁘게 생각한다. 특히 이론만 설명하는 것이 아니라 예제를 통해 설명하고 있으므로 구석구석 상세히 읽어보면 R을 좀 더 잘 활용하게 될 것이라고 믿는다.

옮긴이 소개

정사범

산업공학을 전공했고 의사결정과 최적화 방법론에 관심이 많다. 2000년 초반 입사해 제조업 분야에서 다양한 데이터를 R과 파이썬으로 분석해본 경험이 있다. 지금도 제조 현장에서 발생하는 여러 이슈 사항을 데이터에 근거해 수리적으로 해결해보려고 고민하고 있다. 또한 다양한 책과 현장 경험을 통해 데이터 수집, 정제, 분석, 보고 방법에 대한 지식을 얻는 것에 감사하고 있다. 에이콘출판사에서 출간한 『RStudio 따라잡기』(2013), 『The R book(Second Edition) 한국어판』(2014), 『예측 분석 모델링 실무 기법』(2014), 『데이터 마이닝 개념과 기법』(2015), 『파이썬으로 풀어보는 수학』(2016)을 번역했다.

목차

목차
  • 1장. 데이터 형식
    • 값 할당
    • 작업 영역
    • 이산형 데이터 형식
      • 정수형
      • 논리형
      • 문자형
      • 팩터
    • 연속형 데이터 형식
      • 더블
      • 복소수
    • 특정 데이터 형식
      • as와 is 함수에 관한 유의 사항
    • 요약

  • 2장. 데이터 구조화
    • 기초 데이터 구조
      • 벡터
      • 리스트
      • 데이터 프레임
      • 테이블
      • 행렬과 배열
      • 데이터 검열
      • 행과 열을 추가하기
    • 데이터 구조에 대한 연산
      • apply 명령
      • apply
        • lapply와 sapply
        • tapply
        • mapply
    • 요약

  • 3장. 데이터 저장과 결과 출력
    • 파일과 폴더 정보
      • 데이터 입력
      • 명령줄에서 데이터 입력하기
      • 파일에서 테이블 읽어오기
      • CSV 파일
      • 고정 폭 파일
    • 결과 출력과 데이터 저장
      • 작업 공간 저장
      • cat 명령
      • 출력, 형식, 붙여넣기 명령
    • 기본 입/출력
    • 네트워크 옵션
      • 소켓 열기
      • 기본 소켓 작업
    • 요약

  • 4장. 확률과 난수 계산
    • 개요
    • 분포함수
    • 누적분포함수
    • 역누적 분포함수
    • 의사 난수 생성하기
    • 샘플링
    • 요약

  • 5장. 문자와 문자열 연산
    • 기초 문자열 연산
    • 여섯 개 중점 작업
      • 문자열의 길이를 결정하기
      • 부분 문자열의 위치
      • 부분 문자열을 추출하거나 변경하기
      • 대소문자 변환
      • 문자열 나누기
      • 일정 형식을 갖춘 문자열 생성
    • 정규표현
    • 요약

  • 6장. 시간 변수의 변환과 정의
    • 개요 및 가정
    • 문자열을 시간 데이터 형식으로 변환
    • 시간 데이터 형식을 문자열로 변환
    • 시간 데이터 형식에 대한 연산
    • 요약

  • 7장. 기본 프로그래밍
    • 조건부 실행
    • 루프 구조
      • for 루프 구조
      • while 루프 구조
      • repeat 루프 구조
      • break와 next문
    • 함수
      • 함수 정의
      • 함수에 대한 인자
      • 범위
      • 스크립트 실행하기
    • 요약

  • 8장. S3 클래스
    • 클래스와 메소드 정의하기
    • 객체와 상속을 정의하기
    • 캡슐화
    • 최종 유의 사항
    • 요약

  • 9장. S4 클래스
    • Ant 클래스 소개
    • S4 클래스 정의
    • S4 클래스에 대해 메소드를 정의하기
      • 신규 메소드를 정의하기
      • 다형성
      • 현 메소드 확장하기
    • 상속
    • 기타 참고 사항
    • 요약

  • 10장. 사례연구: 과정 등급
    • 개요
    • 과정(Course) 클래스
      • 과정(Course) 클래스의 정의
      • 한 개 파일에서 등급을 읽어오기
    • 과제 클래스
      • 숫자형 등급 클래스
      • 문자형 등급 클래스
      • 예제: 파일에서 등급을 읽어오기
    • 인덱싱 연산 정의하기
    • 현존 함수를 재정의하기
    • 산술연산 재정의하기
    • 요약

  • 11장. 사례연구: 시뮬레이션
    • 시뮬레이션 클래스
    • 몬테카를로 클래스
    • 예제
    • 요약
  • 12장. 사례연구: 회귀분석
    • 데이터
    • 관련 클래스
    • 회귀 클래스
    • 데이터 탐색하기
    • 요약

  • 부록. 패키지 관리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2016. 7. 26 수정 사항

[p28. 아래에서 3행]
b[4]
->
bubba[4]

[p28. 아래에서 2행]
b
->
bubba