이번 마크다운 세번째 포스팅에서는 github readme를 수정하는 방법(참고: suy379.tistory.com/5)에 이어,
2. 파이썬(python)- jupyter notebook의 마크다운을 이용하여 텍스트를 작성하는 방법
3. R markdown을 이용하여 문서 만드는 방법을 알아보겠습니다.
2. Python - Jupyter notebook에 마크다운 적용하기
이 부분은 마크다운 첫 번째 포스팅에서 알려드린 방법들을 이용해 동일하게 적용하면 됩니다. 우선 쥬피터 노트북을 실행해준 후, 마크다운 편집기로 변경합니다. 보통 쥬피터 노트북에선 코드를 작성하고, 해당 코드의 제목 또는 부가 설명을 달 경우 마크다운을 사용합니다.
기본적인 마크다운을 사용하기 위해 #으로 헤더(Header)를 달고, 순서가 없는 리스트를 '-' 문자를 활용해 써주었습니다. 문장 내의 볼드체와 이탤릭체도 자유자재로 사용 가능합니다.
이번엔 조금 다르게 LateX equations를 사용해보도록 하겠습니다. 즉, 수식을 입력하는 것인데요. 이를 하기 위해선 특수문자 $ 2개를 활용합니다. 그래서 $와 $ 사이에 쓰고자 하는 수식을 입력해주면 됩니다. 두번째 코드처럼 $$ 2개를 활용하게 되면 수식이 좀 더 크고 가운데 정렬됩니다.
먼저 $ \sum_{i=0}^n X_i $ 의 경우는 sum_은 시그마(∑) 기호를 의미하며 i가 0부터 n까지인 Xi를 대상으로 시그마를 적용하는 것입니다.
그 뒤의 $$ \sum_{i=1}^n \frac{1}{x_i} $$ 또한 시그마 기호인데 frac을 사용했으므로 1/Xi를 대상으로 시그마를 적용하는 것입니다.
이렇게 간단하게 알아보았습니다. 기본 문법만 알고 있으면 LateX문을 마크다운으로 작성해 수식을 입력할 수 있습니다. 구글에 Latex syntax를 치면 관련한 문법이 여러개 나오니 참고하시고, LateX equations의 경우 추후 다른 포스팅에서 다룰 기회가 있으면 진행해보도록 하겠습니다.
따로 코랩(colab)에 적용하는 것을 언급하진 않았지만, 코랩의 텍스트에도 마크다운은 동일하게 적용됩니다.
3. R markdown 이용하기
R markdown의 경우 이용하기 위해선 별도의 패키지인 'rmarkdown'의 설치가 필요합니다. 이를 위해 다음의 코드를 실행합니다.
install.packages('rmarkdown', dependencies = c('Depends','Imports'))
library(rmarkdown)
위의 코드를 실행하면 R markdown을 수행할 준비가 되었습니다. RStudio를 켜고 좌측 상단의 File-> new file-> R markdown을 눌러 실행합니다.
저의 경우엔 HTML 파일을 만들 것이므로 HTML에 체크하였으나, pdf 또는 word 파일로 결과물을 출력할 수 있습니다. pdf의 경우엔 따로 패키지 설치가 필요하며, html과 word는 별다른 패키지 설치 없이 그냥 만들 수 있습니다.
OK를 누르면 R markdown 파일인 .rmd 파일이 생성됩니다. 먼저 이 파일을 저장하세요.
그리고 R markdown을 이용해 HTML 파일을 출력하기 위해선 knit(니트)해주는 게 필요합니다. 위의 화면은 디폴트로 만들어지는 R 마크다운 화면이며, 빨간 동그라미친 'Knit'라고 쓰인 아이콘을 눌러주면 화면의 오른쪽처럼 만들어진 HTML을 미리보기할 수 있습니다.
이제 디폴트로 제공되는 부분을 제거하고 실제로 R 마크다운을 활용해봅시다.
디폴트로 제공되는 부분 중, 처음의 knitr::opts_chunck$set(echo = TRUE) 부분을 제외하고 그 밑의 ## R Markdown~ (동그라미 친 부분)을 모두 지워줍니다.
그리고 새로운 코드를 입력해줍니다.(저의 경우엔 title, author, date 또한 바꿔주었습니다. 저 부분은 텍스트이기 때문에 마음대로 수정이 가능합니다)
코드를 입력하는 부분은 네모 박스를 생성한 후 그 안에 입력해야 하는데, 이 네모 박스를 코드 청크(code chunck)라고 부릅니다. 네모 박스를 만들기 위해선 단축키인 ctrl+shift+I를 활용합니다. 그리고 네모박스 안에 다음의 코드를 씁니다.
data(iris)
library(knitr)
kable(iris[1:10,])
그리고 knit 아이콘을 눌러 니팅해주면 다음의 출력물이 나옵니다.
이번에는 코드 청크 외에 텍스트를 입력하는 마크다운을 활용해봅시다. 텍스트를 쓰려면 코드 청크가 있는 네모박스를 제외한 어떤 곳에든 쓸 수 있습니다. 저의 경우엔 다음의 텍스트를 코드 청크 바로 밑에 입력했습니다.
iris data have **`r nrow(iris)` observations** with **`r ncol(iris)` columns.**
이렇게 R 마크다운을 활용하면 됩니다. 그다지 어렵지 않죠? 여기서 잠깐 코드 청크의 옵션에 대해 알고 가겠습니다. 코드 청크의 옵션은 {r} 옆에 함께 작성합니다.
echo=FALSE | code를 출력하지 않습니다. |
results='hide' | 코드 실행 결과를 출력하지 않습니다. |
include=FALSE | code 및 결과를 모두 출력하지 않습니다. |
eval=FALSE | code를 evaluate하지 않습니다. |
warning=FALSE | R warning 메세지를 출력하지 않습니다. |
message=FALSE | R 메세지를 출력하지 않습니다. |
fig.width=# | figure의 width(폭)을 지정한 숫자만큼 적용합니다. |
fig.height=# | figure의 height(높이)를 지정한 숫자만큼 적용합니다. |
디폴트는 이 옵션들이 모두 TRUE인 것이라, 우리가 코드 청크를 실행하면 code와 실행 결과가 모두 출력됩니다.
실제로 위의 옵션 중 일부를 적용한 코드 청크를 실행해 보겠습니다.
먼저 1+1에 대해, include=False로 하면 코드와 결과가 출력되지 않습니다.
echo=FALSE는 코드가 출력되지 않지만 결과만 출력되며, results='hide'는 반대로 코드는 출력되나 결과가 출력되지 않습니다.
마지막으로 iris의 첫번째, 두번째 컬럼으로 산점도를 그린 후, 이 산점도(output)의 크기를 조정하였습니다. out.width는 500픽셀, fig.align='center'로 지정하였으니 그림이 가운데에 위치할 것이고, echo=FALSE이므로 코드는 출력되지 않고 결과만 출력될 것입니다.
마지막으로, R markdown에서도 LateX equations를 사용할 수 있습니다. 주의할 점은, LateX equations를 입력할 때 코드 청크 안에서 쓰지 않고 그냥 텍스트로 입력해도 된다는 것입니다.
또한, 앞서 쥬피터 노트북에서 했던 것과 똑같이 입력해주면 됩니다. $ 문자 2개 (또는 $$ 문자 2개) 사이에 쓰고자 하는 수식을 입력해주면 됩니다.
이렇게 파이썬 쥬피터 노트북과 R markdown에서 배웠던 마크다운 기법들을 잘 적용하여 실습해 보았습니다. 미리 알아두면 편리한 마크다운을 안 쓸 이유가 없겠죠?ㅎㅎ
유용한 포스팅이었길 바라며 이만 마칩니다.