Slide 1

Slide 1 text

#102 @kilometer00 2022.10.22 R Markdown for beginners

Slide 2

Slide 2 text

Who!? 名前: 三村 @kilometer 職業: ポスドク (こうがくはくし) 専⾨: ⾏動神経科学(霊⻑類) 脳イメージング 医療システム⼯学 R歴: ~ 10年ぐらい 流⾏: 南極探検隊

Slide 3

Slide 3 text

宣伝!! (書籍の翻訳に参加しました。) 第五刷!!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

BeginneR Session

Slide 6

Slide 6 text

BeginneR

Slide 7

Slide 7 text

Beginne R Advance d Hoxo_m If I have seen further it is by standing on the shoulders of Giants. -- Sir Isaac Newton, 1676

Slide 8

Slide 8 text

Before A'er BeginneR Session BeginneR BeginneR

Slide 9

Slide 9 text

"a" != "b" # is A in B? ブール演算⼦ Boolean Algebra [1] TRUE 1 %in% 10:100 # is A in B? [1] FALSE

Slide 10

Slide 10 text

George Boole 1815 - 1864 A Class-Room Introduc2on to Logic h7ps://niyamaklogic.wordpress.com/c ategory/laws-of-thoughts/ Mathematician Philosopher &

Slide 11

Slide 11 text

ブール演算⼦ Boolean Algebra A == B A != B George Boole 1815 - 1864 A | B A & B A %in% B # equal to # not equal to # or # and # is A in B? wikipedia

Slide 12

Slide 12 text

Programing

Slide 13

Slide 13 text

AI Programmer !? import sample data scatter plot speed and dist as x and y axes, respectively import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('sample_data.csv') plt.scatter(data['speed'], data['dist’]) plt.show() library(tidyverse) df <- read_csv("sample_data.csv") df %>% ggplot(aes(x = speed, y = dist)) + geom_point() https://aiprogrammer.hashlab.jp/

Slide 14

Slide 14 text

Programing Write Run Read Think Write Run Read Think Communicate Share

Slide 15

Slide 15 text

#102 @kilometer00 2022.10.22 R Markdown for beginners

Slide 16

Slide 16 text

Program documentation code # comment Input Output document (for PC) (for human)

Slide 17

Slide 17 text

Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to humans what we want the computer to do. — Donald E. Knuth, Literate Programming, 1984 プログラム構築に関する伝統的な態度を切り替えてみましょう。 コンピュータに何をするべきかを指図するのが主な仕事だと考えるのではなく、 むしろコンピュータに何をして欲しいかを⼈間に説明することに集中しよう。 — ドナルド・E・クヌース, ⽂芸的プログラミング, 1984 Literate Programming

Slide 18

Slide 18 text

Literate Programming code document # comment Input Output

Slide 19

Slide 19 text

Literate Programming in R Sweave knitr rmarkdown Quato? 2012 2002 2014 WAB → Noweb ↓ 2021 R Markdown: The Definitive Guide Yihui Xie, J. J. Allaire, Garrett Grolemund, 2022 https://bookdown.org/yihui/rmarkdown/#ref-xie2015 Yihui Xie @xieyihui

Slide 20

Slide 20 text

R Markdown ① Make a new .Rmd file ② Write something (for human) ③ Knit it!!

Slide 21

Slide 21 text

R Markdown ① Make a new .Rmd file ② Write something (for human) using markdown & R ③ Knit it!!

Slide 22

Slide 22 text

Markdown A simple markup language that uses plain text formatting syntax plain text with markdown .html .pdf .docx

Slide 23

Slide 23 text

Markup Language Plain text Rich text HTML = Hyper Text Markup Language Web browser

Slide 24

Slide 24 text

Markup Language Plain text Rich text Markdown HTML

Slide 25

Slide 25 text

Markup Language Plain text Rich text Markdown HTML Pandoc pandoc -f markdown -t html hoge.md > hoge.html

Slide 26

Slide 26 text

Markdown Plain text Rich text *This* This **This** This ***This*** ~~This~~ This This This This

Slide 27

Slide 27 text

Markdown Plain text Rich text

Slide 28

Slide 28 text

Markdown Plain text Rich text

Slide 29

Slide 29 text

Markdown Plain text Rich text

Slide 30

Slide 30 text

```r library(palmerpenguins) penguins[1, ] ``` ``` # A tibble: 1 × 8 species island bill_…¹ bill_…² flipp…³ body_…⁴ sex year 1 Adelie Torger… 39.1 18.7 181 3750 male 2007 # … with abbreviated variable names ¹bill_length_mm, # ²bill_depth_mm, ³flipper_length_mm, ⁴body_mass_g ``` Markdown Plain text Rich text

Slide 31

Slide 31 text

Write .md .md .r write code test code write document copy code paste code copy results paste results write document write document

Slide 32

Slide 32 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r

Slide 33

Slide 33 text

.Rmd .md .html .pdf .docx knitr Pandoc

Slide 34

Slide 34 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r Peaceful world ・No copy & paste ・No window switching

Slide 35

Slide 35 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r Peaceful world ・No copy & paste ・No window switching You MUST write docs about the R code You JUST write docs about your analysis with R code

Slide 36

Slide 36 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r --- title: "Hoge" output: html_document: default --- YAML header (YAML Ain't a Markup Language.)

Slide 37

Slide 37 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r --- title: "Hoge" output: html_document: keep_md: TRUE --- YAML header (YAML Ain't a Markup Language.)

Slide 38

Slide 38 text

Knit .Rmd in English .Rmd → .html .Rmd → .pdf .Rmd → .docx Easy!! Great!! Comfortable! Good!! Okay, if you need.

Slide 39

Slide 39 text

Knit .Rmd in Japanese .Rmd → .html .Rmd → .pdf .Rmd → .docx Easy!! Great!! Darkness Darknes(

Slide 40

Slide 40 text

As soon as Anakin came before him on Coruscant, Yoda could sense darkness in his soul. --- The Phantom Menace

Slide 41

Slide 41 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r YAML header for Japanese PDF (in my env.) --- title: "segments" output: pdf_document: latex_engine: xelatex documentclass: bxjsarticle classoption: xelatex,ja=standard mainfont: Hiragino Kaku Gothic Pro ---

Slide 42

Slide 42 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r Code Chunk 1 Code Chunk 2 ```{r, chunk1} ``` ```{r, chunk2} Chunk name

Slide 43

Slide 43 text

Chunk options ```{r chunk1, ...} ``` Language Name Options echo eval include results fig.width / fig.height collapse warning message

Slide 44

Slide 44 text

Chunk options ```{r chunk1, options...} ``` ```{r} #| chunk1 #| options... ``` =

Slide 45

Slide 45 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r ```{r setup, include=FALSE} knitr::opts_chunk$set( echo = TRUE ) ``` Global setting of chank options

Slide 46

Slide 46 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r Code Chunk 1 ```{r, chunk1} ``` Run this chunk: ⌘+Shift+↩

Slide 47

Slide 47 text

.Rmd set document write document write .r write document write document test .r write .py test .py ```{r pyenv, include=FALSE} reticulate::use_python( python = ".../bin/python", required = TRUE ) ``` Write python in .Rmd

Slide 48

Slide 48 text

Write python in .Rmd

Slide 49

Slide 49 text

Write python in .Rmd https://speakerdeck.com/kilometer

Slide 50

Slide 50 text

In summary ...

Slide 51

Slide 51 text

R Markdown ① Make a new .Rmd file ② Write something (for human) using markdown & R ③ Knit it!!

Slide 52

Slide 52 text

.Rmd .md .html .pdf .docx knitr Pandoc

Slide 53

Slide 53 text

Write .Rmd .Rmd set document write document write .r write document write document test .r write .r test .r --- title: "Hoge" output: html_document: default --- YAML header (YAML Ain't a Markup Language.)

Slide 54

Slide 54 text

Chunk options ```{r chunk1, ...} ``` Language Name Options echo eval include results fig.width / fig.height collapse warning message

Slide 55

Slide 55 text

Literate Programming code document # comment Input Output

Slide 56

Slide 56 text

Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to humans what we want the computer to do. — Donald E. Knuth, Literate Programming, 1984 プログラム構築に関する伝統的な態度を切り替えてみましょう。 コンピュータに何をするべきかを指図するのが主な仕事だと考えるのではなく、 むしろコンピュータに何をして欲しいかを⼈間に説明することに集中しよう。 — ドナルド・E・クヌース, ⽂芸的プログラミング, 1984 Literate Programming

Slide 57

Slide 57 text

Enjoy!!