ミクロ政治データ分析実習

4/ Quartoと再現可能な研究

(そん)  財泫(じぇひょん)

関西大学総合情報学部

授業開始前に

スムーズに実習できるように予め準備しておいてください。

  1. JDCat分析ツールを起動しておいてください。
  2. 本日授業用のプロジェクトを開いてください。
  3. (時間に余裕があれば)Consoleペインにpacman::p_up()を入力し、パッケージを最新版に更新してください。
  4. (時間に余裕があれば)講義資料に目を通してください。
  • トラブルが生じた場合、速やかにTAを呼んでください。

R MarkdownとQuarto

R Markdown / Quartoとは

R Markdown
  • R + Markdown
  • Rのコードと結果、文章が一つの文書としてまとめたもの
    • HTML、Microsoft Word(.docx)、PDF等
  • スライド、ホームページ、ポスター、書籍なども作成可能

Quarto
  • 読み方は「クゥオート」(クワトロじゃない)
  • 断片化されつつあるR Markdown生態系を一つに統合したもの
    • R Markdownだとホームページには{blogdown}、書籍執筆は{bookdown}、スライド作成は{xaringan}など
    • 本講義のスライド、サポートページ、教科書、宋のホームページも全てQuartoで作成
  • R Markdownと使い方はほぼ同じ
    • 本講義ではQuartoを使用
    • 現時点でQuartoとR Markdownの上位互換だと考えても良い
  • Python/Julia/Observable JSも使用可能

プレーンテキストとリッチテキスト

  • Plain text:書式情報などが含まれていない純粋なテキストのみで構成されている文書
    • macOSの「テキストエディット」、Windowsの「メモ帳」など
  • Rich text:書式情報だけでなく、図表なども含まれる文書
    • Microsoft Word、Apple Pagesなど
  • 書式情報の例: 文書の余白、行間の幅、文字サイズ、太さ、色
  • リッチテキストには文字情報以外にも様々な書式情報が含まれているため、サイズが大きく、パソコンへの負担も大きい

プレーンからリッチへ

  • Markup言語:プレーンテキストをリッチテキストへ変換するための言語
  • HTML(HyperText Markup Language)が代表的
    • 例1) <b></b>で囲まれた文字は太字として出力される。
    • 例2) <a></a>で囲まれた文字はリンクであり、<a>href引数で指定されたリンク先へ飛ばされる。

Input:

この文字は<b>太字</b>にしましょう。<br/>
この文字は<a href = "https://www.jaysong.net">リンク</a>にしましょう。

Output:

この文字は太字にしましょう。
この文字はリンクにしましょう。

Markdownとは

  • Markdown): Markup言語の軽量版
    • 文章作成に必要なタグ(tag)をより簡単に記述できる。
    • ブラインドタッチに慣れればWordよりも素早く文書を作成することができるようになる。


以下の2つのコードは同じ結果を返す。

Markupの場合(HTML)

この文字は<b>太字</b>にしましょう。<br/>
この文字は<a href = "https://www.jaysong.net">リンク</a>にしましょう。

Markdownの場合

この文字は**太字**にしましょう。

この文字は[リンク](https://www.jaysong.net)にしましょう。

結果

この文字は太字にしましょう。

この文字はリンクにしましょう。

Markup vs. Markdown

表の作成

Markup

<table>
    <thead style = "font-weight:bold;">
        <td>ID</td>
        <td>Name</td>
    </thead>
    <tr>
        <td>1</td>
        <td>Song</td>
    </tr>
    <tr>
        <td>2</td>
        <td>Yanai</td>
    </tr>
</table>

Markdown

| ID | Name  |
|----|-------|
| 1  | Song  |
| 2  | Yanai |

綺麗に揃えなくてもOK

|ID|Name|
|---|---|
|1|Song|
|2|Yanai|

Output

ID Name
1 Song
2 Yanai

Markup vs. Markdown

箇条書き

Markup

<ul>
  <li>箇条書き1</li>
    <ul>
      <li>箇条書き1A</li>
      <li>箇条書き1B</li>
    </ul>
  <li>箇条書き2</li>
  <li>箇条書き3</li>
</ul>

Markdown

- 箇条書き1
   - 箇条書き1A
   - 箇条書き1B
- 箇条書き2
- 箇条書き3

Output

  • 箇条書き1
    • 箇条書き1A
    • 箇条書き1B
  • 箇条書き2
  • 箇条書き3

Markup

<ol>
  <li>箇条書き1</li>
    <ol>
      <li>箇条書き1A</li>
      <li>箇条書き1B</li>
    </ol>
  <li>箇条書き2</li>
  <li>箇条書き3</li>
</ol>

Markdown

1. 箇条書き1
   1. 箇条書き1-1
1. 箇条書き2
1. 箇条書き3

Output

  1. 箇条書き1
    1. 箇条書き1-1
  2. 箇条書き2
  3. 箇条書き3

はじめてのQuarto

.qmdファイルの生成

  1. RStudioを起動し、プロジェクトを作成する。
  2. File > New > Quarto Document…を選択する。
    • Use visual markdown editorのチェックを外す
  3. OKをクリックする。
  4. YAMLヘッダーを修正する。
  5. ファイルを保存する(File > Save)。
    • ショートカットキー: ⌘ + S(macOS)、または Ctrl + S(Linux/Windows)
  6. Sourceペイン上段のRenderをクリックする。
    • ショートカットキー: ⌘ + Shift + K(macOS)、または Ctrl + Shift + K(Linux/Windows)

【2026年4月29日現在】Viewerペインに「Not found」と表示される…

 2026年4月29日現在、レンダーした出力物が正しく表示されないケースが確認されている。発生条件が特定できないため、これはシステム側の問題と考えられ、近日中の修正は困難と考えられる。Fileペインにある.htmlファイルをクリックし、「View in Web Browser」をクリックすると、新しいタブにrenderしたフィアルが表示される。RStudio側でrenderし、htmlファイルが開いているタブをリフレッシュ(WindowsはCtrl + R / macOSはCmd + R)すると更新内容が反映される。詳細は講義中説明する。

YAMLヘッダー

.qmdファイル最上段に位置する文書の情報に関する内容

  • 最初はtitleformatのみになっているため、適宜修正(場合によってはtitleのみになっている)
---
title: "はじめてのQuarto"
author: "関大花子"
date: "1986/10/9"
format: html
lang: ja
---
  • title: 文書のタイトル
    • subtitle:でサブタイトルも付けられる。
  • author: 文書の作成者
  • date: 日付(「年/月/日」形式で入力)
    • date: todayに修正すると、Renderした日の日付が自動的につけられる。
  • format: 出力形式(htmlのままで良い)
    • 他にもPDF、Microsoft Word、スライド、ウェブページ、書籍などにも対応
  • lang: 出力言語(デフォルトはen; jaは日本語)

Markdown文法

Markdownの文法:文章の改行

1回のみの改行は連続した文字列として認識するため、文章を改行するためには、必ず2回改行が必要

Input

これは文章1です。
これは文章2です。

Output

これは文章1です。 これは文章2です。

Input

これは文章1です。

これは文章2です。

Output

これは文章1です。

これは文章2です。

Markdownの文法:強調

  • 英語の強調はイタリック、日本語の強調は太字を使用
    • イタリックの日本語は使用しない。

Input

文章の一部を**太字**にしてみましょう。

The G7 consists of Canada, France, Germany, Italy, *Japan*, UK, and USA.

~~取り消し線~~はあまり使わないかも。

<u>アンダーライン</u>はHTMLタグを使います。

Output

文章の一部を太字にしてみましょう。

The G7 consists of Canada, France, Germany, Italy, Japan, UK, and USA.

取り消し線はあまり使わないかも。

アンダーラインはHTMLタグを使います。

Markdownの文法:リンク

  • [リンク文](URL)
  • []で囲まれた文章をクリックすると()内で指定したURLへ移動

Input

[ここ](https://www.jaysong.net)をクリックすると、宋のHPへ移動します。

Output

ここをクリックすると、宋のHPへ移動します。

Markdownの文法:見出し

  • # + 半角スペース + 見出し(#が多いほど小さくなる)

Input

# 見出し1 (ヘッディング1)
## 見出し2 (ヘッディング2)
### 見出し3 (ヘッディング3)
#### 見出し4 (ヘッディング4)

Output

見出し1 (ヘッディング1)

見出し2 (ヘッディング2)

見出し3 (ヘッディング3)

見出し4 (ヘッディング4)

Markdownの文法:水平線

  • 任意の行に---を挿入
  • 章と章の区切り、節と節の区切りなどに使用

Input

文章1

---

文章2

Output

文章1


文章2

Markdownの文法:箇条書き(順序なし)

  • * + 半角スペース + 文字列
  • 階層構造にする場合、*の前に半角スペースを3個入れる
  • *の代わりに-も可

Input

* リスト1
* リスト2
   * リスト2-1
      * リスト2-1-1
      * リスト2-1-2
   * リスト2-1
* リスト3

Output

  • リスト1
  • リスト2
    • リスト2-1
      • リスト2-1-1
      • リスト2-1-2
    • リスト2-1
  • リスト3

Markdownの文法:箇条書き(順序付き)

  • 1. + 半角スペース + 文字列
  • 1.の箇所は任意の数字でもOK。1.2.、…も可
  • 階層構造にする場合、1.の前に半角スペースを3個入れる
  • 1.*の組み合わせも可能

Input

1. リスト1
2. リスト2
   1. リスト2-1
      1. リスト2-1-1
      2. リスト2-1-2
   2. リスト2-1
3. リスト3

Output

  1. リスト1
  2. リスト2
    1. リスト2-1
      1. リスト2-1-1
      2. リスト2-1-2
    2. リスト2-1
  3. リスト3

Markdownの文法:数式

  • 文中数式は$数式$、独立した行の数式は$$で囲む。
  • \(\LaTeX\)の数式表記法を理解する必要がある。

Input

文中の数式の例:$e = mc^2$

独立した数式の例は、

$$
y_i \sim \text{Normal}(\mathbf{X} \boldsymbol{\beta}, \sigma).
$$

のように書きます。

Output

文中の数式の例:\(e = mc^2\)

独立した数式の例は、

\[ y_i \sim \text{Normal}(\mathbf{X} \boldsymbol{\beta}, \sigma). \]

のように書きます。

Markdownの文法:表

  • 行は改行で、列は|で区切る
  • 1行目は表のヘッダーであり、|---|で区切る(-は1個以上でOK)
    • |---||:---|は左揃え、|---:|は右揃え、|:---:|は中央揃え

Input

|ID |Name   |Birth (Year)|Pref   |
|:-:|-------|-----------:|-------|
|1  |Ogura  |1852        |Tokyo  |
|2  |Tsurumi|1858        |Tochigi|
|3  |Yoshida|1858        |Fukuoka|
|4  |Hotta  |1859        |Chiba  |
|5  |Inoue  |1847        |Nagano |
|6  |Tezuka |1862        |Tokyo  |
|7  |Shikata|1857        |Saitama|
|8  |Nomura |1855        |Gunma  |

Output

ID Name Birth (Year) Pref
1 Ogura 1852 Tokyo
2 Tsurumi 1858 Tochigi
3 Yoshida 1858 Fukuoka
4 Hotta 1859 Chiba
5 Inoue 1847 Nagano
6 Tezuka 1862 Tokyo
7 Shikata 1857 Saitama
8 Nomura 1855 Gunma

Markdownの文法:コメント

出力に影響されないコメントを入れる場合

  • <!---->内に囲む
  • <!---->の間の文章は出力されない
  • 自分用のメモ、とりあえず出力させない内容などに使用
  • チャンク内コメントは#(チャンクは後に解説)

Input:

これは文章1です。

<!--
これはコメントです。
-->

これは文章2です。

Output:

これは文章1です。

これは文章2です。

Markdownの文法:その他

教科書の「Quarto [基礎] [文書] [スライド]」を参照

  • 図の挿入
  • 脚注
  • 引用
  • 相互参照
  • スライド作成
  • Quarto独自の機能など

Rコードの挿入

Rコード:チャンク(Chunk)

Rのコードを挿入する領域

  • ```{r}```で囲む。
    • チャンクの外にコードを書いても文章として認識する。
    • チャンク内においてMarkdown文法は通用しない。純粋なRコードのみ。
    • `は「バッククォート(back quote)」と読む。
    • チャンクの前後は必ず改行する(下のコードの4・9行目のように)。
  • コードの出力 > 結果の出力の順番

Input

ここはチャンクの外

ここに書いたものは文章として扱われる。

```{r}
x <- 5 # 円の半径
print(3.14 * x^2)
```

ここに書いたのも文章

Output

ここはチャンクの外

ここに書いたものは文章として扱われる。

x <- 5 # 円の半径
print(3.14 * x^2)
[1] 78.5

ここに書いたのも文章

Rコード:チャンクのオプション

チャンク内に各チャンクのオプションが指定可能

チャンクオプションの付け方

```{r}
#| label: my_chunk_1
#| warning: false
#| echo: false
#| fig-width: 8
#| fig-align: center

Rのコード
```
  • #| label: チャンクの名前
    • チャンクに名前を付ける
  • #| eval: false
    • コードのみ出力し、結果は出力しない
  • #| echo: false
    • 結果のみ出力し、コードは出力しない
  • #| fig-width: 5
    • 出力される図の幅を8インチに
  • #| fig-height: 500px
    • 出力される図の幅を高さを500ピクセルに
  • #| fig-align: center
    • 出力される図を中央揃えに
  • #| warning: false
    • 警告メッセージを隠す
  • #| error: true
    • エラーが発生してもとりあえずRenderする

Rコード:インラインコード

文章内にRコードの結果を埋め込む場合

  • `r`の間にコードを挿入(「`」は「バッククォート」と読む)
  • 単に`で囲まれたものはコードのように表示してくれるものの、そのコードは実行されない。文中に短いコードのみを入れたり、変数名、関数名を示す際に使う機能である。

Input:

```{r}
X <- c(2, 3, 5, 7, 11)
```

変数`X`の平均値は`r mean(X)`です。

Output:

X <- c(2, 3, 5, 7, 11)

変数Xの平均値は5.6です。

課題について

課題

今回以降の課題はQuartoを利用する(詳細はLSMのオンデマンド講義資料を参照すること)。

  1. 今回課題用のプロジェクトを作成する。
  2. LMSの「第5回課題」から「問題ファイル(.qmd形式)」ダウンロードし、プロジェクトのフォルダーにアップロードする。
  3. アップロードした.qmdファイルを開く。
  4. Renderし、結果を確認する。
  5. 本講義のサポートページの「課題 > 第5回課題」へアクセスする。
  6. サンプルのような体裁になるように問題ファイルを修正する。
    • 学籍番号・氏名は自分の学籍番号・氏名に直すこと。
  7. 完成後、生成された.htmlファイルを自分のPCにダウンロードし、ダウンロードした.htmlファイルを関大LMSに提出する。
    • ファイルのダウンロード方法はサポートページの「Rの使い方 > ファイル管理」を参照すること
  8. 摘出期限および提出窓口はLMSを確認すること

注意!!

  • 間違ったファイルを提出しないこと(期限の差し替えは何度でも可; 期限の差し替えは不可)
    • ダメな例).qmdファイルの提出 \(\leftarrow \times\)
    • 邪悪な例).qmdファイルの拡張子を.htmlに変えて提出 \(\leftarrow \times\)(Androidスマホにリンゴのシールだけ貼って、「これiPhoneです」と言うのと同じレベルの話)
  • サポートページの「課題の取り組み方」を必ず確認すること。毎年、間違って提出方法で未提出扱いとなった学生がいる。自分が提出したファイルが問題ないかを確認したい場合、LMSの「マイレポート」から提出物をダウンロードし、自分のPCで開いてみることを推奨。期限内なら何度でも差し替え可能。
  • 期限内に提出できなかった場合、宋に連絡不要(延長は絶対にない)