SlideShare a Scribd company logo
1 of 48
Download to read offline
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Creating R Package for Windows Users
Jae-seong Yoo
Dept. of Statistics
February 15, 2015
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Title
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
누가 이 문서를 보는 것이 좋은가?
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
누가 이 문서를 보는 것이 좋은가?
이 문서는, 고려대학교 통계학과 석사과정 이상의 학생들을 대상으로 만들어졌다.
그러나 어느 정도 R을 다루는 수준이 있는 사람이라면 누구나 볼 수 있다.
이 문서는 다음과 같은 사람에게 도움이 될 것이다.
(당연하지만,) R 패키지를 만들고자 하는 사람
(역시 당연하지만,) R의 기초는 되어있는 사람
Windows 환경에서 패키지를 만들고자 하는 사람.
(이 문서는 Windows 7 64비트 환경에 초점이 맞추어져 있다.)
자신이 R의 기초가 되어있고, R 패키지를 만들 준비가 되어있는지 판단하기 위해서는,
스스로에게 다음의 질문을 던져보자.
1 벡터, 행렬, 데이터프레임, 문자열 등의 Object Type에 대해 잘 알고 이해하고
있는가?
2 조건문 (if, switch case 등), 반복문(for, while 등)을 잘 활용할 수 있는가?
3 (간단한 목적이더라도) 사용자정의 함수를 자유롭게 만들 수 있는가?
4 다른 언어(C, Fortran, Java, Python 등)와의 인터페이싱에 관심이 있는가?
(인터페이싱은 반드시 필요하지는 않다. 이 문서에서는 다루지 않을 것이다.)
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
주요 용어
R Package
R Package 만들기에 관한 주요 문서
Introduction
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
주요 용어
R Package
R Package 만들기에 관한 주요 문서
주요 용어
Package An extension of the R base system with code, data and documentation in
standardized format.
Library A directory containing installed packages.
Repository A website providing packages for installation.
Source The original version of a package with human-readable text and code.
Binary A compiled version of a package with computer-readable text and code, may
work only on a specific platform.
Base Packages Part of the R source tree, maintained by R Core.
Recommended Packages Part of every R installation, but not necessarily maintained by R
Core.
Contributed Packages All the rest. This does not mean that these packages are necessarily of
lesser quality than the above, e.g., many contributed packages on CRAN are
written and maintained by R Core members. We simply try to keep the base
distribution as lean as possible.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
주요 용어
R Package
R Package 만들기에 관한 주요 문서
R Package
Package An extension of the R base system with code, data and documentation in
standardized format.
R 패키지에 반드시 들어가야 하는 것
각각 함수로 구현 된 R 코드 Set (확장명 .R로 R 폴더에 저장됨)
위의 각 함수에 대한 Document (확장명 .Rd로 man 폴더에 저장됨)
DESCRIPTION (패키지 자체에 대한 메타 Document)
※ 위는 모두 package.skeleton()을 실행할 때 자동으로 생성된다.
※ 반드시 utf-8로 저장해야한다.
R 패키지에 들어갈 수 있는 것
Dataset (이에 관한 Document도 함께 필요함.)
Demo (이에 관한 Document도 함께 필요함.)
Depends (의존하는 패키지. DESCRIPTION에서 지정해준다.)
Suggests
(의존하지는 않지만 함께 사용하길 권장하는 패키지. DESCRIPTION에서 지정해준다.)
그 외에 추가 프로그램, 언어에 따른 메시지 출력, 추가 문서 등
(Writing R Extensions을 참고하도록 하자.)
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
주요 용어
R Package
R Package 만들기에 관한 주요 문서
R Package 만들기에 관한 문서
공식 문서 Writing R Extensions : R 패키지를 위한 공식 매뉴얼
http://cran.r-project.org/doc/manuals/r-release/R-exts.html
CRAN Repository Policy : CRAN에 제출하기 위해 지켜야할 정책
http://cran.r-project.org/web/packages/policies.html
Contributed Packages : 이미 있는 패키지명을 확인하기 위해
http://cran.nexr.com/web/packages/index.html
The R Reference Index : 이미 있는 함수명을 확인하기 위해
http://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf
비공식 문서 David Dies, (—-), ”Building R Packages - An Introduction”, Havard
SPH.
Friedrich Leisch, (2009), ”Creating R Packages: A Tutorial”, R
Development Core Team.
Building R packages for Windows
http://robjhyndman.com/hyndsight/building-r-packages-for-windows/
Developing R packages
https:
//sites.google.com/site/hackoutwiki/developers-corner/developing-r-packages
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration
왜 이들을 준비해야 할까?
R은 원래 리눅스 환경에서 제작되었다. R 패키지를 만드는 일 또한 R Core
작업 중 하나이므로 리눅스 환경이 유리하다.
그러나 이미 윈도우즈 환경에 익숙해진 우리는 이를 일일이 준비하는 것이
부담되므로, 윈도우즈 환경에서 리눅스용 작업이 가능한 환경을
갖추어주어야 한다.
리눅스 환경에서 해야할 작업을 윈도우즈에서 하다보니 예외상황에도 많이
직면하게 될 것이다.
무엇을 준비해야 할까?
R
Editor
RTools
MikTeX
texinfo
Inno Setup
XML (WiX) toolkit
MinGW-w64
※ 사실 이들 중 일부는 늘 필요한 것이 아니지만, 그냥 설치하자. 예외상황에 대처하기 귀찮다...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration : R, Editor, Rtools
R 생략
Editor R에 내장된 자체 Editor, notepad, TinnR 등.
어느 것을 써도 좋지만, R Document를 작성할 때 인코딩 문제가 발생할 수
있는데, 이를 수월하게 해결해줄 수 있는 Tool이 Notepad++이다. 따라서
이를 권장한다.
하지만 자신에게 익숙한 Tool을 쓰는 것이 최선이다.
Rtools R과 R 패키지를 build하기 위한 tool을 모아놓은 kit을 Rtools라고 한다.
R-project 홈페이지 -> CRAN -> Download R for Windows -> Rtools를
다운로드하여 설치하도록 한다.
http://cran.nexr.com/bin/windows/
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration : MikTeX
MikTeX
http://miktex.org/
TeXLive 등 다른 TeX 컴파일러는 안된다. 반드시 MikTeX을 설치하자.
작업하는 환경에 맞는 MikTeX을 설치하자. (아래 그림 참고)
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration : MikTeX
다음 MikTeX 패키지 필수 설치 :
times, inconsolata (또는 bera), lm, cm-super, ae, hyper, hyperref
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Set Up and Configuration : Others
texinfo http://gnuwin32.sourceforge.net/packages/texinfo.htm
Inno Setup http://www.jrsoftware.org/isinfo.php
XML (WiX) toolkit http://wixtoolset.org/
MinGW-w64 Cygwin을 추천한다.
http://mingw-w64.sourceforge.net/
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
환경 변수 설정
차례대로 따라하도록 하자. 1/5
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
환경 변수 설정
차례대로 따라하도록 하자. 2/5
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
환경 변수 설정
차례대로 따라하도록 하자. 3/5
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
환경 변수 설정
차례대로 따라하도록 하자. 4/5
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
환경 변수 설정
차례대로 따라하도록 하자. 5/5
말풍선에 있는 값을 추가하자.
※ 문서를 작성하는 시점에서의 최신 버전 기준으로 작성하였지만, R, MikTeX의 경우 버전에
따라 설치 경로가 달라져있을 수 있으니, 설치 경로를 확인하고 추가하자.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
Build a R Packages
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
패키지 골격을 만들어주는 함수 : package.skeleton
함수가 정상적으로 만들어졌다면, setwd로 지정한 폴더에 MyPac이라는 폴더가 생성된다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
패키지 골격을 만들어주는 함수 : package.skeleton
함수가 정상적으로 만들어졌다면, setwd로 지정한 폴더에 MyPac이라는 폴더가 생성된다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
패키지 골격을 만들어주는 함수 : package.skeleton
MyPac 폴더에 만들어진 폴더 및 파일
man Document 파일(.Rd)이 모여있는 폴더
R 작성한 함수(.R) 파일이 모여있는 폴더
DESCRIPTION 패키지 자체에 대한 메타 Document
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
패키지 골격을 만들어주는 함수 : package.skeleton
man 폴더에 있는 Document(.Rd) 파일들
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
패키지 골격을 만들어주는 함수 : package.skeleton
R 폴더에 있는 함수(.R) 파일들
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
package.skeleton(패키지 골격)으로 만들어지지
않는다면?
잘못 만든 함수 함수가 잘못 만들어졌을 수 있다.
인코딩 문제 파일 문자 유형(이하 인코딩)은 UTF-8로 저장되어야 한다.
(윈도우즈에서 텍스트파일 기본은 ANSI 또는 EUC-KR)
메모장이나 Notepad++을 사용할 경우 아래 그림과 같은 방법으로 인코딩을
변경해주자.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
Writing Documents for R Packages
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
DESCRIPTION
MyPac의 DESCRIPTION을 열어본 모습
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
DESCRIPTION
DESCRIPTION의 일반적인 양식
반드시 이 형태를 지켜야 한다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
man (.Rd)
MyPac의 man 폴더 안에 있는 prod cube.Rd 파일을 열어본 모습
나름 TeX 양식이다.
함수가 n개 있으면, n+1개의 Rd 파일이 man 폴더 안에 생성된다.
(+1은 패키지 [패키지명−package].Rd 파일)
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
man (.Rd)
일반적인 .Rd의 양식
만일 필요없는 항목이라고 여겨지면, 아예 그 section을 삭제해주자.
가령 키워드가 필요없다면, keyword 를 아예 지워주자.
문서에서 쓸모없거나 성의없는 항목이 있는 것은, 패키지 reject이 될 큰 사유가 된다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
그 외의 패키지를 구성하는 것들
그 외에 Demo, Dataset, 추가 프로그램, 언어에 따른 메시지 출력, 추가 문서 등
Writing R Extensions을 참고하도록 하자.
http://cran.r-project.org/doc/manuals/r-release/R-exts.html
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Submission to CRAN
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
이제 모든 과정이 끝났으면, Build를 하자.
원래는 CMD 창에서 치는 Rcmd 명령어이지만, system() 함수를 이용하여 R 상에서 check,
build를 위와 같이 할 수 있다.
Rcmd check ... 명령어에서 error가 발생한다면 build가 아예 되지 않을 것이다.
만일 warning이 발생한다면 build는 될 것이지만, CRAN에서는 이 패키지를 받아주지 않는다.
Rcmd check를 하는 과정에서 error나 warning이 발생하였다면, 함수는 제대로 작성했는지,
인코딩 문제는 없는지 등 앞에서 설명한 모든 부분을 제대로 거쳤는지 다시 꼼꼼하게
확인해보자.
다만 예외상황 ”Error: Font ts1-zi4r at 540 not found” 에 대한 error가 뜬다면, 이에 대한
해결책은 2페이지 이후에서 설명하겠음.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
MyPac을 Rcmd 명령어로 check, build하는 모습
이 예제를 위해 만든 예제이다보니, 굳이 Document를 작성하지 않았기 때문에, Error와
Warning이 발생하였지만, 사실은 이런 메시지가 뜨면 안된다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법
CMD 창에서 다음 명령어를 차례로 입력한다. CMD 창은 닫지 말자.
initexmf –update-fndb
initexmf –edit-config-file updmap
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법
메모장이 자동으로 뜰 것이다. 거기에 다음 라인을 추가하고 저장한다.
Map zi4.map
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Build your package
예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법
아까 열어놓은 CMD 창에서 다음 명령어를 입력한다.
initexmf –mkmaps
이제 CMD 창을 닫아도 된다.
이 과정을 거쳤음에도 여전히 문제가 발생한다면 MikTeX을 제대로 설치했는지 확인해보자.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Submission to CRAN
위 .tar 파일을 CRAN에 제출하면 된다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Submission to CRAN
Submit package to CRAN http://xmpalantir.wu.ac.at/cransubmit/
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Submission to CRAN
생각보다 빠른 시간 안에 경과 메일이 온다.
실패했을 경우, 실패 사유를 적어줄 것이다.
위의 경우는 Warning 메시지를 확인하라는 회신을 준 경우이다.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
Build your package
Submission to CRAN
Submission to CRAN
성공했을 때도 메일을 위와 같이 보내줄 것이다.
위와 같은 회신이 와도, 전 세계 mirror 서버에 파일이 전부 복사되는 데에는 경우에 따라 1∼7
일 정도 걸리니, install.packages() 명령어를 바로 치고 싶어도, 잠시만 참고 기다리도록 하자.
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
마무리하면서...
1 누가 이 문서를 보는 것이 좋은가?
2 Introduction
주요 용어
R Package
R Package 만들기에 관한 주요 문서
3 Set Up and Configuration
4 Build a R Packages
예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
패키지 골격을 만들어주는 함수 : package.skeleton
package.skeleton(패키지 골격)으로 만들어지지 않는다면?
5 Writing Documents for R Packages
DESCRIPTION
man (.Rd)
그 외의 패키지를 구성하는 것들
6 Submission to CRAN
Build your package
Submission to CRAN
7 마무리하면서...
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
마무리하면서...
신경써야 할 부분
Policy는 꼭 지켜야 한다.
사용할 메일 주소는, 가급적이면 평생 사용할 것으로 하자.
(korea.ac.kr 메일을 과연 내 인생에서 얼마나 쓰겠는가...)
인코딩은 의외로 예민한 문제이다.
Object의 Type은 정말 예민한 문제이다.
Demo, Reference가 있으면 accept될 가능성이 크게 올라간다.
(필수는 아니다. Demo의 경우는 그에 대한 .Rd를 추가로 작성해주어야 하지만, R Document
가 부실할 경우 Demo가 패키지 accept에 큰 도움이 된다.)
제출만 하고 손을 놓고 있지는 말자. 유지 보수가 중요하다.
크게 신경쓰지 않아도 될 부분
이미 있는 기능이라고 겁먹지 말자.
(기존 패키지보다 더 나은 점을 R document나 reference로 어필하면 된다. 다만 R document에
타 패키지를 언급하는 것은 신중해야한다. CRAN 사람들은 예의와 상호 존중을 중요시한다.)
R로만 작성해도 좋다. 제대로만 작동하면 된다.
(다른 언어와의 인터페이싱은 성능 개선을 위한 일일 뿐, 필수가 아니다.)
참조하는 Reference가 학계에서 힘이 약해도 괜찮다. 사실 없어도 된다.
(단지 있으면 accept될 가능성이 커지는 것. 그 reference는 ”남들이 제대로 된 reference라고
인정만 해주었으면” 그것으로도 충분하다. 석사학위논문, 영어가 아닌 논문도 accept만
되었다면 받아주는 분위기이다.)
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
패키지에 들어갈 함수를 위한 추가 팁 1
Object의 Type은 정말 예민한 문제이니, 아예 함수에서 받아들여야 할 인자의 Type을
제한하는 방법을 많이 쓴다.
is. stop 명령어를 활용하는 방법
warning 명령어도 있다.
함수 안에서 형변환을 해주는 방법
누가 이 문서를 보는 것이 좋은가?
Introduction
Set Up and Configuration
Build a R Packages
Writing Documents for R Packages
Submission to CRAN
마무리하면서...
패키지에 들어갈 함수를 위한 추가 팁 2
패키지를 load할 때 그 패키지가 설치되지 않았다면, 설치해주고 load까지 해주는 코드
다른 패키지에 대한 Dependency를 낮추면서, 다른 패키지의 기능을 활용할 수 있다.
Demo에만 쓰자. 패키지에 쓰이는 함수에서는 이 꼼수가 통하지 않는다.

More Related Content

Similar to Creating R Package for Windows Users

[Week5] Getting started with R
[Week5] Getting started with R[Week5] Getting started with R
[Week5] Getting started with Rneuroassociates
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정Aiden Seonghak Hong
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지위키북스
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기Sunghyouk Bae
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”Jaimie Kwon (권재명)
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
 
프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)Devgear
 
Python packaging
Python packagingPython packaging
Python packagingJi Hun Kim
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개Tommy Lee
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodedpTablo
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick GuideJi-Woong Choi
 
Petra보고서 개발 open자료
Petra보고서 개발 open자료Petra보고서 개발 open자료
Petra보고서 개발 open자료cho hyun jong
 

Similar to Creating R Package for Windows Users (20)

[Week5] Getting started with R
[Week5] Getting started with R[Week5] Getting started with R
[Week5] Getting started with R
 
R hive tutorial 1
R hive tutorial 1R hive tutorial 1
R hive tutorial 1
 
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
RHive tutorial 1: RHive 튜토리얼 1 - 설치 및 설정
 
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
(스프링프레임워크 강좌)스프링부트개요 및 HelloWorld 따라하기
 
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
빅데이터 분석을 위한 스파크 2 프로그래밍 : 대용량 데이터 처리부터 머신러닝까지
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
 
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
R 소개
R 소개R 소개
R 소개
 
프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)프로그래밍 언어 기초(델파이,C++)
프로그래밍 언어 기초(델파이,C++)
 
Python packaging
Python packagingPython packaging
Python packaging
 
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
제2회 난공불락 오픈소스 인프라 세미나 zinst 관리툴 소개
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
Spring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCodeSpring Boot + React + Gradle in VSCode
Spring Boot + React + Gradle in VSCode
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
Petra보고서 개발 open자료
Petra보고서 개발 open자료Petra보고서 개발 open자료
Petra보고서 개발 open자료
 

Creating R Package for Windows Users

  • 1. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Creating R Package for Windows Users Jae-seong Yoo Dept. of Statistics February 15, 2015
  • 2. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Title 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 3. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 누가 이 문서를 보는 것이 좋은가? 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 4. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 누가 이 문서를 보는 것이 좋은가? 이 문서는, 고려대학교 통계학과 석사과정 이상의 학생들을 대상으로 만들어졌다. 그러나 어느 정도 R을 다루는 수준이 있는 사람이라면 누구나 볼 수 있다. 이 문서는 다음과 같은 사람에게 도움이 될 것이다. (당연하지만,) R 패키지를 만들고자 하는 사람 (역시 당연하지만,) R의 기초는 되어있는 사람 Windows 환경에서 패키지를 만들고자 하는 사람. (이 문서는 Windows 7 64비트 환경에 초점이 맞추어져 있다.) 자신이 R의 기초가 되어있고, R 패키지를 만들 준비가 되어있는지 판단하기 위해서는, 스스로에게 다음의 질문을 던져보자. 1 벡터, 행렬, 데이터프레임, 문자열 등의 Object Type에 대해 잘 알고 이해하고 있는가? 2 조건문 (if, switch case 등), 반복문(for, while 등)을 잘 활용할 수 있는가? 3 (간단한 목적이더라도) 사용자정의 함수를 자유롭게 만들 수 있는가? 4 다른 언어(C, Fortran, Java, Python 등)와의 인터페이싱에 관심이 있는가? (인터페이싱은 반드시 필요하지는 않다. 이 문서에서는 다루지 않을 것이다.)
  • 5. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 주요 용어 R Package R Package 만들기에 관한 주요 문서 Introduction 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 6. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 주요 용어 R Package R Package 만들기에 관한 주요 문서 주요 용어 Package An extension of the R base system with code, data and documentation in standardized format. Library A directory containing installed packages. Repository A website providing packages for installation. Source The original version of a package with human-readable text and code. Binary A compiled version of a package with computer-readable text and code, may work only on a specific platform. Base Packages Part of the R source tree, maintained by R Core. Recommended Packages Part of every R installation, but not necessarily maintained by R Core. Contributed Packages All the rest. This does not mean that these packages are necessarily of lesser quality than the above, e.g., many contributed packages on CRAN are written and maintained by R Core members. We simply try to keep the base distribution as lean as possible.
  • 7. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 주요 용어 R Package R Package 만들기에 관한 주요 문서 R Package Package An extension of the R base system with code, data and documentation in standardized format. R 패키지에 반드시 들어가야 하는 것 각각 함수로 구현 된 R 코드 Set (확장명 .R로 R 폴더에 저장됨) 위의 각 함수에 대한 Document (확장명 .Rd로 man 폴더에 저장됨) DESCRIPTION (패키지 자체에 대한 메타 Document) ※ 위는 모두 package.skeleton()을 실행할 때 자동으로 생성된다. ※ 반드시 utf-8로 저장해야한다. R 패키지에 들어갈 수 있는 것 Dataset (이에 관한 Document도 함께 필요함.) Demo (이에 관한 Document도 함께 필요함.) Depends (의존하는 패키지. DESCRIPTION에서 지정해준다.) Suggests (의존하지는 않지만 함께 사용하길 권장하는 패키지. DESCRIPTION에서 지정해준다.) 그 외에 추가 프로그램, 언어에 따른 메시지 출력, 추가 문서 등 (Writing R Extensions을 참고하도록 하자.)
  • 8. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 주요 용어 R Package R Package 만들기에 관한 주요 문서 R Package 만들기에 관한 문서 공식 문서 Writing R Extensions : R 패키지를 위한 공식 매뉴얼 http://cran.r-project.org/doc/manuals/r-release/R-exts.html CRAN Repository Policy : CRAN에 제출하기 위해 지켜야할 정책 http://cran.r-project.org/web/packages/policies.html Contributed Packages : 이미 있는 패키지명을 확인하기 위해 http://cran.nexr.com/web/packages/index.html The R Reference Index : 이미 있는 함수명을 확인하기 위해 http://cran.r-project.org/doc/manuals/r-release/fullrefman.pdf 비공식 문서 David Dies, (—-), ”Building R Packages - An Introduction”, Havard SPH. Friedrich Leisch, (2009), ”Creating R Packages: A Tutorial”, R Development Core Team. Building R packages for Windows http://robjhyndman.com/hyndsight/building-r-packages-for-windows/ Developing R packages https: //sites.google.com/site/hackoutwiki/developers-corner/developing-r-packages
  • 9. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 10. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration 왜 이들을 준비해야 할까? R은 원래 리눅스 환경에서 제작되었다. R 패키지를 만드는 일 또한 R Core 작업 중 하나이므로 리눅스 환경이 유리하다. 그러나 이미 윈도우즈 환경에 익숙해진 우리는 이를 일일이 준비하는 것이 부담되므로, 윈도우즈 환경에서 리눅스용 작업이 가능한 환경을 갖추어주어야 한다. 리눅스 환경에서 해야할 작업을 윈도우즈에서 하다보니 예외상황에도 많이 직면하게 될 것이다. 무엇을 준비해야 할까? R Editor RTools MikTeX texinfo Inno Setup XML (WiX) toolkit MinGW-w64 ※ 사실 이들 중 일부는 늘 필요한 것이 아니지만, 그냥 설치하자. 예외상황에 대처하기 귀찮다...
  • 11. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration : R, Editor, Rtools R 생략 Editor R에 내장된 자체 Editor, notepad, TinnR 등. 어느 것을 써도 좋지만, R Document를 작성할 때 인코딩 문제가 발생할 수 있는데, 이를 수월하게 해결해줄 수 있는 Tool이 Notepad++이다. 따라서 이를 권장한다. 하지만 자신에게 익숙한 Tool을 쓰는 것이 최선이다. Rtools R과 R 패키지를 build하기 위한 tool을 모아놓은 kit을 Rtools라고 한다. R-project 홈페이지 -> CRAN -> Download R for Windows -> Rtools를 다운로드하여 설치하도록 한다. http://cran.nexr.com/bin/windows/
  • 12. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration : MikTeX MikTeX http://miktex.org/ TeXLive 등 다른 TeX 컴파일러는 안된다. 반드시 MikTeX을 설치하자. 작업하는 환경에 맞는 MikTeX을 설치하자. (아래 그림 참고)
  • 13. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration : MikTeX 다음 MikTeX 패키지 필수 설치 : times, inconsolata (또는 bera), lm, cm-super, ae, hyper, hyperref
  • 14. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Set Up and Configuration : Others texinfo http://gnuwin32.sourceforge.net/packages/texinfo.htm Inno Setup http://www.jrsoftware.org/isinfo.php XML (WiX) toolkit http://wixtoolset.org/ MinGW-w64 Cygwin을 추천한다. http://mingw-w64.sourceforge.net/
  • 15. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 환경 변수 설정 차례대로 따라하도록 하자. 1/5
  • 16. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 환경 변수 설정 차례대로 따라하도록 하자. 2/5
  • 17. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 환경 변수 설정 차례대로 따라하도록 하자. 3/5
  • 18. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 환경 변수 설정 차례대로 따라하도록 하자. 4/5
  • 19. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 환경 변수 설정 차례대로 따라하도록 하자. 5/5 말풍선에 있는 값을 추가하자. ※ 문서를 작성하는 시점에서의 최신 버전 기준으로 작성하였지만, R, MikTeX의 경우 버전에 따라 설치 경로가 달라져있을 수 있으니, 설치 경로를 확인하고 추가하자.
  • 20. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? Build a R Packages 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 21. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자.
  • 22. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 패키지 골격을 만들어주는 함수 : package.skeleton 함수가 정상적으로 만들어졌다면, setwd로 지정한 폴더에 MyPac이라는 폴더가 생성된다.
  • 23. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 패키지 골격을 만들어주는 함수 : package.skeleton 함수가 정상적으로 만들어졌다면, setwd로 지정한 폴더에 MyPac이라는 폴더가 생성된다.
  • 24. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 패키지 골격을 만들어주는 함수 : package.skeleton MyPac 폴더에 만들어진 폴더 및 파일 man Document 파일(.Rd)이 모여있는 폴더 R 작성한 함수(.R) 파일이 모여있는 폴더 DESCRIPTION 패키지 자체에 대한 메타 Document
  • 25. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 패키지 골격을 만들어주는 함수 : package.skeleton man 폴더에 있는 Document(.Rd) 파일들
  • 26. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 패키지 골격을 만들어주는 함수 : package.skeleton R 폴더에 있는 함수(.R) 파일들
  • 27. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? package.skeleton(패키지 골격)으로 만들어지지 않는다면? 잘못 만든 함수 함수가 잘못 만들어졌을 수 있다. 인코딩 문제 파일 문자 유형(이하 인코딩)은 UTF-8로 저장되어야 한다. (윈도우즈에서 텍스트파일 기본은 ANSI 또는 EUC-KR) 메모장이나 Notepad++을 사용할 경우 아래 그림과 같은 방법으로 인코딩을 변경해주자.
  • 28. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 Writing Documents for R Packages 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 29. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 DESCRIPTION MyPac의 DESCRIPTION을 열어본 모습
  • 30. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 DESCRIPTION DESCRIPTION의 일반적인 양식 반드시 이 형태를 지켜야 한다.
  • 31. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 man (.Rd) MyPac의 man 폴더 안에 있는 prod cube.Rd 파일을 열어본 모습 나름 TeX 양식이다. 함수가 n개 있으면, n+1개의 Rd 파일이 man 폴더 안에 생성된다. (+1은 패키지 [패키지명−package].Rd 파일)
  • 32. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 man (.Rd) 일반적인 .Rd의 양식 만일 필요없는 항목이라고 여겨지면, 아예 그 section을 삭제해주자. 가령 키워드가 필요없다면, keyword 를 아예 지워주자. 문서에서 쓸모없거나 성의없는 항목이 있는 것은, 패키지 reject이 될 큰 사유가 된다.
  • 33. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 그 외의 패키지를 구성하는 것들 그 외에 Demo, Dataset, 추가 프로그램, 언어에 따른 메시지 출력, 추가 문서 등 Writing R Extensions을 참고하도록 하자. http://cran.r-project.org/doc/manuals/r-release/R-exts.html
  • 34. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Submission to CRAN 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 35. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package 이제 모든 과정이 끝났으면, Build를 하자. 원래는 CMD 창에서 치는 Rcmd 명령어이지만, system() 함수를 이용하여 R 상에서 check, build를 위와 같이 할 수 있다. Rcmd check ... 명령어에서 error가 발생한다면 build가 아예 되지 않을 것이다. 만일 warning이 발생한다면 build는 될 것이지만, CRAN에서는 이 패키지를 받아주지 않는다. Rcmd check를 하는 과정에서 error나 warning이 발생하였다면, 함수는 제대로 작성했는지, 인코딩 문제는 없는지 등 앞에서 설명한 모든 부분을 제대로 거쳤는지 다시 꼼꼼하게 확인해보자. 다만 예외상황 ”Error: Font ts1-zi4r at 540 not found” 에 대한 error가 뜬다면, 이에 대한 해결책은 2페이지 이후에서 설명하겠음.
  • 36. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package MyPac을 Rcmd 명령어로 check, build하는 모습 이 예제를 위해 만든 예제이다보니, 굳이 Document를 작성하지 않았기 때문에, Error와 Warning이 발생하였지만, 사실은 이런 메시지가 뜨면 안된다.
  • 37. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package 예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법
  • 38. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package 예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법 CMD 창에서 다음 명령어를 차례로 입력한다. CMD 창은 닫지 말자. initexmf –update-fndb initexmf –edit-config-file updmap
  • 39. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package 예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법 메모장이 자동으로 뜰 것이다. 거기에 다음 라인을 추가하고 저장한다. Map zi4.map
  • 40. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Build your package 예외상황 : Error: Font ts1-zi4r at 540 not found 에 대한 해결 방법 아까 열어놓은 CMD 창에서 다음 명령어를 입력한다. initexmf –mkmaps 이제 CMD 창을 닫아도 된다. 이 과정을 거쳤음에도 여전히 문제가 발생한다면 MikTeX을 제대로 설치했는지 확인해보자.
  • 41. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Submission to CRAN 위 .tar 파일을 CRAN에 제출하면 된다.
  • 42. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Submission to CRAN Submit package to CRAN http://xmpalantir.wu.ac.at/cransubmit/
  • 43. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Submission to CRAN 생각보다 빠른 시간 안에 경과 메일이 온다. 실패했을 경우, 실패 사유를 적어줄 것이다. 위의 경우는 Warning 메시지를 확인하라는 회신을 준 경우이다.
  • 44. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... Build your package Submission to CRAN Submission to CRAN 성공했을 때도 메일을 위와 같이 보내줄 것이다. 위와 같은 회신이 와도, 전 세계 mirror 서버에 파일이 전부 복사되는 데에는 경우에 따라 1∼7 일 정도 걸리니, install.packages() 명령어를 바로 치고 싶어도, 잠시만 참고 기다리도록 하자.
  • 45. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 마무리하면서... 1 누가 이 문서를 보는 것이 좋은가? 2 Introduction 주요 용어 R Package R Package 만들기에 관한 주요 문서 3 Set Up and Configuration 4 Build a R Packages 예제 : 제곱, 세제곱을 해주는 패키지를 만들어보자. 패키지 골격을 만들어주는 함수 : package.skeleton package.skeleton(패키지 골격)으로 만들어지지 않는다면? 5 Writing Documents for R Packages DESCRIPTION man (.Rd) 그 외의 패키지를 구성하는 것들 6 Submission to CRAN Build your package Submission to CRAN 7 마무리하면서...
  • 46. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 마무리하면서... 신경써야 할 부분 Policy는 꼭 지켜야 한다. 사용할 메일 주소는, 가급적이면 평생 사용할 것으로 하자. (korea.ac.kr 메일을 과연 내 인생에서 얼마나 쓰겠는가...) 인코딩은 의외로 예민한 문제이다. Object의 Type은 정말 예민한 문제이다. Demo, Reference가 있으면 accept될 가능성이 크게 올라간다. (필수는 아니다. Demo의 경우는 그에 대한 .Rd를 추가로 작성해주어야 하지만, R Document 가 부실할 경우 Demo가 패키지 accept에 큰 도움이 된다.) 제출만 하고 손을 놓고 있지는 말자. 유지 보수가 중요하다. 크게 신경쓰지 않아도 될 부분 이미 있는 기능이라고 겁먹지 말자. (기존 패키지보다 더 나은 점을 R document나 reference로 어필하면 된다. 다만 R document에 타 패키지를 언급하는 것은 신중해야한다. CRAN 사람들은 예의와 상호 존중을 중요시한다.) R로만 작성해도 좋다. 제대로만 작동하면 된다. (다른 언어와의 인터페이싱은 성능 개선을 위한 일일 뿐, 필수가 아니다.) 참조하는 Reference가 학계에서 힘이 약해도 괜찮다. 사실 없어도 된다. (단지 있으면 accept될 가능성이 커지는 것. 그 reference는 ”남들이 제대로 된 reference라고 인정만 해주었으면” 그것으로도 충분하다. 석사학위논문, 영어가 아닌 논문도 accept만 되었다면 받아주는 분위기이다.)
  • 47. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 패키지에 들어갈 함수를 위한 추가 팁 1 Object의 Type은 정말 예민한 문제이니, 아예 함수에서 받아들여야 할 인자의 Type을 제한하는 방법을 많이 쓴다. is. stop 명령어를 활용하는 방법 warning 명령어도 있다. 함수 안에서 형변환을 해주는 방법
  • 48. 누가 이 문서를 보는 것이 좋은가? Introduction Set Up and Configuration Build a R Packages Writing Documents for R Packages Submission to CRAN 마무리하면서... 패키지에 들어갈 함수를 위한 추가 팁 2 패키지를 load할 때 그 패키지가 설치되지 않았다면, 설치해주고 load까지 해주는 코드 다른 패키지에 대한 Dependency를 낮추면서, 다른 패키지의 기능을 활용할 수 있다. Demo에만 쓰자. 패키지에 쓰이는 함수에서는 이 꼼수가 통하지 않는다.