R 통합개발환경(IDE)인 RStudio 를 사용해서 R code와 함께 텍스트를 혼합해서 HTML, PDF, MS Word 등의 다양한 형태의 문서를 문들 수 있습니다. 

데이터, 통계분석 코드와 텍스트가 수미일관되게 하나의 문서 안에서 관리될 수 있다면 버전 관리의 어려움을 덜 수 있어서 재현가능한 연구(Reproducible Research) 관점에서 매우 유용합니다. 

기존의 사용 방법과 비교를 해보겠습니다. 기존 대로라면 R로 코드를 짜고 (혹은 엑셀을 사용해서), 요약통계량도 뽑고, 추정, 검정도 하고, 그래프도 그린 다음에 이걸 HTML, 워드나 파워포인트복사 & 붙여넣기(copy & paste), 혹은 화면 캡쳐를 해서 붙여넣기를 했을 겁니다.  그런데 만약 raw data에 변경 사항이 발생하면 이후의 작업에 모두 영향을 미치게 되며, 일일이 찾아가서 수정을 해줘야 합니다.(업계 전문용어로 시간 잡아먹는 쌩노가다...-_-;)  시간도 아까울뿐더러, 행여 실수로 최신 데이터 결과로 업데이트 하는 것을 빼먹기라도 하면 의사결정을 하는데 있어 심각한 오류를 범하게 할 수도 있습니다. 

이번 포스팅에서 다룰 내용은 바로 이런 난맥을 해결할 수 있는 방법입니다. 그리고 HTML 로 만들어서 웹상에서 공유하면 여러사람이 공유, 협업하는데도 유용할 것입니다. 


[ R Markdown : Analyze. Share. Reproduce. ]

* source : http://rmarkdown.rstudio.com/


다음의 순서대로 소개를 하겠습니다.

=========================================

1. knitr, rmarkdown package 설치하기

2. RStudio Project 만들기

3. R Markdown 문서 만들기 (HTML)

=========================================


 1. knitr, rmarkdown package 설치하기


knitr ('니터'라고 발음), rmarkdown, pandoc package가 필요한데요, 이중에서 pandoc은 RStudio를 설치할 때 알아서 같이 설치가 되므로 신경 안쓰셔도 됩니다. 


# installing knitr, rmarkdown packages

install.packages("knitr")

install.packages("rmarkdown")

library(knitr)

library(rmarkdown)

 




 2. RStudio Project 만들기 


Project는 동일 목적의 단위 작업에 사용된 파일들을 하나의 단일 폴더에 관리할 수 있도록 해주므로 파일 관리, 버전 관리 등에 유용합니다. 

새로운 Project 를 만들려면 RStudio 의 왼쪽 상단 메뉴에서 File > New Project... 를 선택하면 아래와 같은 팝업 화면이 나타납니다. 

이번 포스팅에서는 새로 디렉토리를 만들어서 예를 들 것이므로 'New Directory' 메뉴를 선택해보겠습니다. 


[ File > New Project... > Create Project : New Directory ]



'New Directory' 메뉴를 선택하며 아래처럼 Project Type을 선택하는 화면이 뜹니다. 'Empty Project'를 선택해보겠습니다. (R Package 나 Shiny Web Application 은 나중에 별도 포스팅하겠습니다)


 [ Project Type : Empty Project ]



그 다음으로는 아래처럼 디렉토리 이름(directory name:)과 새로 만들 디렉토리가 위치할 경로(subdirectory of ~)를 지정해주는 화면이 뜹니다.  다 입력하고 나면 하단의 'Create Project' 단추를 눌러주세요. 


[ Directory name : 00000, Create project as subdirectory of : ~/00000 ]



여기까지 실행을 해주면 RStudio 의 우측 하단에 'Files' 메뉴에 방금 전에 지정해주었던 'RMarkDownDir' 이라는 이름의 새로운 디렉토리가 생성되었음을 알 수 있습니다.  그리고 그 폴더 안에 'RMarkDownDir.Rproj' 라는 파일도 새로 만들어졌습니다. 


작업 디렉토리(working directory)를 확인해보니 방금 전에 만든 Project 폴더로 세팅이 되어 있음을 확인할 수 있습니다.  나중에 'RMarkDownDir Project'를 선택해서 실행을 시키면 작업 디렉토리를 알아서 아래처럼 자동 세팅해주므로 편리합니다. 


> # chceking working directory

> getwd()

[1] "C:/Users/Administrator/Documents/R_DynamicDoc/RMarkDownDir"

 


나중에 여러개의 Project를 만들어서 사용하게 되는 경우라면 RStudio 의 우측 상단에 Project list 를 확인하고 선택해서 넘나들 수 있는 아이콘과 메뉴가 있습니다.  아래 화면캡쳐에서는 'RMarkDownDir' 라는 방금 전에 만든 Project만 보이지만요, 다른 프로젝트도 만들면 여러개가 동시에 보일거예요. (참고로, 우측 상단 아이콘 클릭했을 때 첫 줄에 나오는 'New Project' 를 선택하면 역시 새로운 프로젝트를 만들 수 있습니다)



 3. R Markdown 문서 만들기


3-1) 왼쪽 상단의 메뉴에서 File > New File > R Markdown... 메뉴를 선택


3-2) Document 선택 > Title, Author 입력 > Default Output Format에서 HTML 선택 > OK 클릭

(Presentation, Shiny 등은 나중에 별도 포스팅하겠습니다)



3-3) 아래처럼 예제 R Markdown 이 새로 만들어지는데요, title, author는 방금전 팝업 화면에서 입력한 내용이 들어가 있습니다. (간단한 샘플 코드가 들어가 있으니 참고하시면 됩니다)


R Markdown 문서를 rendering 하는 절차는 크게 2단계로 나뉘는데요, 먼저 knitr 패키지로 source code에서 R code 를 실행을 하면 .Rmd 파일이 생성됩니다. 그 다음에 pandoc 패키지를 사용해서 Markdown 을 HTML, PDF, Word 등으로 변환하는 작업을 하면 '.md' 파일이 생성됩니다. 



3-4) Knit > Knit to HTML 선택하면 R code를 knitr 가 실행하고 pandoc 이 HTML로 변환해줌

(단축키 : Ctrl + Shift + K)



3-5) '.Rmd' 파일, 'HTML' 파일이 생성

우측 하단의 'File' 메뉴란을 확인해보시면 아와 같이 '.Rmd' 파일, 'HTML' 파일이 새로 만들어졌습니다. 




3-6) Preview in Viewer Pane 세팅

'Preview in Viewer Pane' 에 체크를 해놓으면 RStudio 우측 하단에 있는 Viewer 에서 HTML 을 미리보기 할 수 있어서 편리합니다. 


3-9) 'Viewer' 확인해보기

우측 하단의 'Viewer' 메뉴에 가서 보면 HTML  형태의 문서를 미리 볼 수가 있습니다. 
(샘플로 예제 하나가 미리 들어가 있으며, 필요한 부분은 샘플 참고해서 수정해가면서 본문 내용 채우면 됨)



3-10) 문서의 전체 목차 한꺼번에 보기(show document outline)

아래 화면 캡쳐해놓은 것처럼 우측 상단의 아이콘('show document outline')을 클릭하면 문서 전체의 목차(outline)을 한눈에 일목요연하게 볼 수 있습니다. 그리고 목차 중의 하나를 선택하면 해당 문서의 단락으로 바로 이동한답니다.  코드가 긴 경우에 '##==== ~~~' 으로 코드 단락을 구분해주면 나중에 전체 조망하기에도 좋고, 바로 원하는 단락으로 직행할 수도 있으므로 매우 편리한 기능이라고 하겠습니다.  단축키는 'Ctrl + Shift + O' 입니다. 


3-11) 문서 단락별로 접었다 펴기(fold, unfold)

아래 화면캡쳐한 부분의 왼쪽 검정색 상자로 표시해 놓은 것처럼 삼각형 뒤집어 놓은 부분을 클릭하면 해당 단락이 접혀(fold)집니다. 토글 기능으로 되어 있어서 한번 더 누르면 다시 펴집니다(unfold). 

많은 도움 되었기를 바랍니다. 

이번 포스팅이 도움이 되셨다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^




저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

Windows OS를 사용하는 곳에서 20~30명 정도의 대형 강의실에서 R 교육을 진행한다거나 Rstudio를 처음 설치해서 사용하는 Windows OS 사용자 중에서 보면 Rstudio 에서 에러가 난다든지, ggplot2 를 실행해도 그래프가 안그려진다든지 하는 경우가 있습니다.  


이럴 경우 제일 처음 확인해보면 도움이 되는게 바로 '사용자 계정이 한글'인지 여부 입니다. 


Rstudio 는 계정이 한글인 경우 경로를 잘 인식하지 못하는 문제점을 가지고 있습니다.  


만약 계정이 한글(예: '홍길동', '00회사')로 되어 있을 경우에는 '사용자 계정을 영어로 변경' 해주면 Rstudio 문제가 해결됩니다. 


사용자 계정을 영어로 변경하는 방법은 아래 순서를 참고하세요. 




[ Windows 의 사용자 계정을 한글에서 영어로 변경하기 ]


  (1) 시작  > (2) 제어판  > (3) 사용자 계정  > (4) 다른 계정 관리  > (5) 새 계정 만들기  

      > (6) 계정 이름 지정 (in English!!) 및 계정 유형 선택

 




(1) 시작 >  (2) '제어판' 선택





(3) (제어판에서) '사용자 계정' 선택





(4) (제어판의 사용자 계정 변경 화면에서) '다른 계정 관리' 메뉴 선택





(5) (하단 메뉴 중에서)  '새 계정 만들기' 메뉴 선택





(6) '계정이름을 영어로 지'해주고 '관리자'로 계정 유형 선택하기

   (계정이름은 반드시 '영어!', 'ENGLISH!!'로 지정)




이렇게 사용자 계정을 한글에서 영어로 변경해놓고 Rsutdio 껐다가 다시 실행시켜보세요. 


많은 도움 되었기를 바랍니다. 


이번 포스팅이 도움이 되셨다면 아래의 '공감~♡' 단추를 꾸욱 눌러주세요. ^^



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

이번 포스팅에서는 Python의 가장 기본적인 구문법 (Basic Syntax)에 대해서 정리를 해보겠습니다. 

 

이미 Python 잘 쓰고 계신 분은 이번 포스팅 건너뛰시면 되겠습니다.

 

Spyder나 Junpyter Notebook 사용법 소개하면서 이미 간단하게나마 언급했던 내용도 이미 있는데요, 파이썬 기본 구문법을 일괄적으로 정리해본다는 차원에서 중복되더라도 다시 소개해봅니다.

 

 

- (1) 파이썬 식별자 (Python Identifier)

- (2) 파이썬 키워드 (Python Keywords)

- (3) 줄 들여쓰기 (Lines and Indentation)

- (4) 복수 줄 선언문 (Multi-Line Statements)

- (5) 파이썬 인용 (Quotation in Python with hash sign #)

- (6) 부가설명 (Comments in Python)

- (7) 한 개의 줄에 복수 선언문 쓰기 (with semicolon ;)

- (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

 (1) 파이썬 식별자 (Python Identifier)

 

파이썬의 변수, 함수, 클래스, 모듈, 객체를 정의하기 위해서 사용하는 이름을 파이썬 식별자 (Python Identifier) 라고 합니다.  식별자는 영어 a~z, A~Z로 시작하거나 (_), (__) 같이 한줄 혹은 두줄 밑줄(underscore)과 0~9 숫자, 문자로 만들 수 있습니다. 

 

- 숫자로 시작하는 식별자는 만들 수 없습니다.  (SyntaxError: invalid token)

 

In [1]: 3_var = 10

File "<ipython-input-1-33101349b3ed>", line 1

3_var = 10

^

SyntaxError: invalid token 

 

- 파이썬은 영어 소문자와 대문자를 구분합니다. (var_1VAR_1 은 서로 다르게 인식함)

- 파이썬에서는 관습적으로 클래스(Class)대문자(uppercase letter)로 시작합니다.

- 한개의 밑줄(_)로 시작하는 식별자priviate 함을 의미합니다.  

- 두개의 밑줄(__)로 시작하는 식별자강하게 private 함을 의미합니다.

- 두개의 밑줄로 시작하고 또 두개의 밑줄로 끝나는 식별자는 파이썬 언어에서 정의한 특별한 이름입니다. (예: __init__(self) 메소드)  

 

 

 

 

 (2) 파이썬 키워드 (Python Keywords)

 

파이썬에는 이미 예약이 되어 있어서 변수 이름으로 사용할 수 없는 단어들이 있는데요, 이를 파이썬 키워드라고 합니다.  모두 소문자예요.  파이썬 키워드를 가지고 새로운 변수 객체를 만들려고 하면 아래처럼 SyntaxError가 납니다.

 

In [7]: and = 10

File "<ipython-input-7-97dbaf47599d>", line 1

and = 10

^

SyntaxError: invalid syntax 

 

 

 

 

 

 (3) 줄 들여쓰기 (Lines and Indentation : 4 spaces)

 

파이썬은 R이나 Java 처럼 함수나 클래스 정의할 때 { } 같은 괄호를 사용하지 않습니다. 대신에 줄 들여쓰기 (Indentation)을 사용합니다.  처음에 좀 당황스럽고 과연 코드 가독성이 떨어지지는 않을까 의구심이 드는데요, 써보면 나름 편리합니다. 게다가 Spyder IDE를 사용하면 알아서 들여쓰기를 해주니 편리하게 코딩할 수 있습니다. 암튼, 들여쓰기 이거 파이썬에서는 매우 중요합니다.

 

첫머리를 들여쓰기 할 때 4줄이나 8줄을 사용하는데요, 보통 4줄 들여쓰기를 많이 하는거 같습니다. 저도 그렇고, 제 주변 프로그래밍 하는 분들도 대부분 4줄 들여쓰기를 Spyder에 설정해놓고 쓰곤 합니다.

참고로, Spyder에서 들여쓰기 설정은 아래 경로로 찾아들어가서 설정하면 됩니다.

 

Spyder : Tools > Preferences > Editor > Advanced setting > Indentation characters : 4 spaces

 

 

 

 

커서를 움직여서 스페이스(space)로 들여쓰기와 탭(tab)으로 들여쓰기가 있는데요, 파이썬을 만든 Guido van Rossum 은 스페이스 들여쓰기를 권장하고 있습니다.  뭘 쓰든 상관은 없는데요, 단, 하나의 프로그래밍에 스페이스 들여쓰기와 탭 들여쓰기가 섞여있으면 파이썬이 경고 메시지를 뱉어냅니다.  하나만 골라서 쓰시는게 좋겠습니다.

 

 

같은 코드 덩어리에서 들여쓰기가 서로 다르면 에러가 납니다.  같은 코드 덩어리에서는 같은 위치로 들여쓰기 해야 합니다.

 

 

# good indentation, no error

In [10]: X = 1

    ...:

    ...: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# no error, hmm... indentation is not good,

# but, anyway it works because the code block is different

In [11]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:         print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# indentation error
# all statements within the same block should be indented the same amount

In [12]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:         print("X is less than 0") # Indentation Error

    ...:

    ...:

File "<ipython-input-12-c021cffab59f>", line 5

print("X is less than 0")

^

IndentationError: unexpected indent

 

 

 

 

꼭 에러가 나지는 않더라도 들여쓰기를 맞추어서 해주면 가독성이 올라기기 때문에 특히 여러사람이 협업하는 경우라면 부가설명을 붙여주는 것과 함께 들여쓰기를 이쁘게 잘 해주는게 좋습니다.

 

 좋은 들여쓰기 예 (good indentation)

나쁜 들여쓰기 예 (bad indentation) 

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
                       'var_1': np.arange(5), 
                       'var_2': np.random.randn(5)}, 
                       index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
       'var_1': np.arange(5), 
       'var_2': np.random.randn(5)}, 
        index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 

 

 

 

 (4) 복수 줄 (Multi-Line Statements with the line continuation character '\')

 

파이썬에서 프로그래밍하다보면 줄이 너무 길어지는 경우가 생겨서 줄 바꾸기를 해주는게 좋겠다 싶을 때가 생기는데요, 이때 '\' 문자 (line continuation character)를 사용해주면 파이썬이 '아, 비록 줄이 바뀌지만 코딩하던거 아직 끝난거 아니구나, 다음 줄도 이전 줄에 이어지는 것이구나'라고 이해를 합니다.

 

 

 

 

단, ( ), [ ], { } 등의 괄호 부호 안에서 쓰는 선언문은 '\' 부호 없이도 그냥 엔터 치고 줄 바꿈 해서 입력해도 알아서 '이전 줄에 이어서 계속 입력하고 있는 거구나' 하고 파이썬이 알아서 해석합니다.

 

 

# not need to use the line continuation character '\' for multi-line statements in case of [ ]

mydata = pd.DataFrame([1, 2, 3,
                                 4, 5, 6,
                                 7, 8, 9])

 

 

 

 

 

 (5) 파이썬 인용 (Quotation in Python with the ' ', " ", ''' ''', """ """)

 

파이썬은 작은 따옴표(' '), 큰 따옴표(" "), 세개 짜리 따옴표 (''' ''' 또는 """ """) 를 가지고 문자열 인용을 합니다. 세개 짜리 따옴표의 경우 2줄 이상의 다수의 줄로 문자열을 나열할 수 있으며, 저 같은 경우 긴 SQL 문을 객체로 만들 때 사용하곤 합니다.

 

 

In [23]: A = 'string A'


In [24]: A

Out[24]: 'string A'


In [25]: B = "string B"


In [26]: B

Out[26]: 'string B'


In [27]: C = """It is a string C. It continues

    ...: as follows. It has the second line."""

    ...:


In [28]: C

Out[28]: 'It is a string C. It continues \nas follows. It has the second line.'

 

 

 

 

 

 (6) 부가설명 (Comments in Python with the hash sign '#')

 

'#' 부호(hash sign)를 쓰면 파이썬은 '#' 이후는 무시해 버립니다.  따라서 파이썬 코드에 부가설명을 달고 싶으면 '#' 부호를 쓴 후에 comments 를 달면 되겠습니다. (이미 다 아시죠? ^^;  R이랑 같습니다.)

 

 

 

 

 (7) 한 줄에 복수개의 선언문 쓰기 (with the semicolon ;)

 

세미콜론 ';' (semicolon)를 사용하면 한 줄에 복수개의 선언문을 나열할 수 있습니다. (이것도 R이랑 같네요)  단, 이때 복수개의 선언문은 code block이면 안되겠습니다.  복수개의 code block을 그룹으로 해서 쓰려면 아래 (8)번 suite 참고하세요.

 

 

# multiple statements on a single line with the semicolon ( ; )

In [34]: var_1 = 10; var_2 = 20; var_3 = 30

    ...:


In [35]: var_1

Out[35]: 10


In [36]: var_2

Out[36]: 20


In [37]: var_3

Out[37]: 30

 

 

 

 

 

 (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

많은 도움 되었기를 바랍니다. 


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

이번 포스팅은 회사에서 > pip install 로 Python 패키지 설치를 하다가 아래와 같은 에러 메지시를 만났을 때 대처 방법에 대한 짧은 글입니다.

 

패키지 설치하려고 하는데 “connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed” 에러 메시지에 맞닥뜨리면 당황스럽습니다.  특히 Python 처음 사용하는 분이라면 더욱더요. 

 

여기서 SSL 은 Secure Sockets Layer 의 약자로서 해킹, 피싱 등으로 부터 소중한 데이터를 지켜주는 것으로 보안(암호화, trusted third party 인증 등...)과 관련이 되어 있습니다. (더 자세히 알고 싶으신 분은 ☞ What is SSL and how does it work?)

 

 

 “connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed”

 

 

이때 조치를 취할 수 있는 방법 4가지를 소개하겠습니다.

 

 

방법 1) cmd 창에서 https 대신에 http url을 사용해서 pip install 로 설치

 

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org pythonPackageName

 

[cmd 창 입력 예시 (시각화 패키지 seaborn 설치하려고 했을 때) ]

 

 

 

참고로 HTTPS는 데이터를 안전하게 전송하기 위해서 SSL(Secure Sockets Layer) 과 연동해서 작동합니다. HTTPS 가 SSL 인증 실패 에러를 일으키는 이유이지요. (HTTPS(Secure HyperText Transfer Protocol) works in conjunction with another protocol, Secure Sockets Layer (SSL), to transport data safely... for more details ☞http://www.biztechmagazine.com/article/2007/07/http-vs-https )

 

 

 

 

방법 2) whl 패키지 설치

 

아래 Link 에서 wheel package를 먼저 다운 받은 후에 (Windows OS의 32bit, 64bit 용 패키지)

          http://www.lfd.uci.edu/~gohlke/pythonlibs/

 

          cmd 창에서 아래의 pip install 명령어로 설치하세요.

 

 pip install wheel_package_name.whl

 

 

 

 

방법 3) easy_install

 

 

easy_install pip==1.2.1
pip install --upgrade pip

 

 

 

 

cmd 창에서 pip(the Preferred Installer Program) 를 사용해서 pip install .... 로 설치하는 대신에 anaconda의 conda install 을 사용해서 설치를 할 수도 있습니다.  SSL verify를 false로 설정해놓아보세요. (이거 어째 좀 위험해보이긴 합니다 -_-;;)

 

방법 4) conda config --set ssl_verify false

 

conda config --set ssl_verify false

conda install pip

conda upgrade pip

 

 

 

참고로요, cmd 창에서 "conda help" 를 치면 conda 로 사용할 수 있는 positional arguments 들에 대한 설명을 볼 수 있습니다.

info, help, list, search, create, install, update, upgrade, remove, uninstall, config, clean, package 등이 있는데요, 아래 화면 캡쳐의 설명을 참고하시거나 직접 cmd 창에 "conda help" 입력해서 확인해보시면 되겠습니다.

 

 

 

 

마지막 참고로요, R 사용자 분이라면요, 회사에서 R 패키지 깔려고 하는데 네트워크 보안 때문에 에러나는 경우는 http://rfriend.tistory.com/177  참고하세요.

 

 

많은 도움 되었기를 바랍니다.


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend


티스토리 툴바