Chapter 16 Week 15:言語研究とオープンサイエンス

16.1 事前の確認

  • この講義のRプロジェクトを開いていますか?

  • 英数字で名前を付けた本日の講義のファイルを作成しましたか?

    • .Rでも.Rmdでもどちらでも大丈夫です。

16.2 今日の目標

  • Rを使った研究の再現性を確保するための方法について理解することができる

2024年8月に名古屋学院大で行われた外国語メディア学会全国大会でのワークショップ(外国語教育研究者のためのオープンサイエンス入門― R Markdownを用いた実践編の内容を改変したものです。

16.3 はじめに

16.3.1 研究成果や研究資料の公開・共有の必要性

16.3.1.1 再現可能な研究のために、研究に使用したマテリアルの提出を推奨

Shared Research Materials and Data Policy for Accepted Articles. Language Learning encourages accepted authors to upload their data collection materials and/or data to the IRIS database (http://www.iris-database.org). IRIS is an online repository for data collection materials used for second language research. This includes data elicitation instruments such as interview and observation schedules, language tests, pictures, questionnaires, software scripts, URL links, word lists, pedagogical interventions, and so on. (…) The sharing of research instrumentation benefits the research community and helps authors and journals increase the visibility of their published research.

16.4 1. R Markdownを使って分析結果をまとめることができる

16.4.1 R Studioを開いて作成する

16.4.1.1 R Markdownの解体新書

  • 【パーツ1】YAML(YAML Ain’t Markup Language)ヘッダー:文章全体の体裁や情報を操作する

    • タイトル、サブタイトル
    • 作成者
    • 作成した日時、更新日時も設定可能
    • どのような形式で作成するか

注意
・ YAMLヘッダーは、RでもMarkdownでもないプログラム言語で記述します。

  • 【パーツ2】コードチャンク:Rのコードを記述するところ

  • 【パーツ3】ドキュメントチャンク:Markdownと呼ばれるプログラム言語で記述するところ

    • 見出し、表、箇条書き、強調、斜体など、Wordのリボン部分にある機能をMarkdownで書く

16.4.2 Knit🧶を押して出力!

  • 初期設定はHTMLファイル出力です

16.5 プロジェクト

  • プロジェクト = ディレクトリ
    • ファイルや操作履歴を保存できる
  • プロジェクトを作成する利点
    • 研究ごとに分析に必要なファイルをまとめることができる

16.6 実際に作ってみましょう

  • デスクトップに新しいフォルダーを作成してください
    • 名前は、英数字のみがいいです(Rが関係しそうな場合、ファイル名、フォルダ名に日本語を使わない方が安心です)
    • 作り方を解説しているサイト(私たちのR
  • デスクトップのフォルダーを指定してプロジェクトを作成しましょう

16.7 ドキュメントチャンク:Markdown記法

16.7.1 覚えるのはマストではない。その都度調べてよく使うものを覚えていく

  • Markdownなら生成AIはほぼ完ぺきに正解を教えてくれる
  • 必要最低限で覚えておくとよい記法
    • 見出し → これはマスト!
      • #の数で指定。文字との間を半角あけるのを忘れない。
    • 箇条書き
      • *, +, -のいずれかを入れる。文字との間を半角あけるのを忘れない。
      • 半角スペースを2つ前(もしくはtab)に入れると、レベル2を作れる。さらに2ついれると、、、
    • 強調
      • *で挟むと斜体
      • **で挟むとBold体
      • ***で挟むとどうなるでしょう

16.8 Let’s 実践

  • 以下の文章をMarkdownを使って再現してください。

’# 名古屋飯といえば

’## ひつまぶし:Hitsumabushi

おすすめは以下のお店です。

  • ひつまぶし花岡
    • 場所:栄

16.9 答え合わせ

# 名古屋飯といえば
## ひつまぶし:*Hitsumabushi*
おすすめは以下のお店です。

- **ひつまぶし花岡**
  - 場所:栄

16.10 実は、Wordのように編集できます!

  • Markdownで書かなくとも、VisualモードであればWordと似たようにできます。
  • 以下で設定ができる
    • [Tools] → [Global Options…] → [R Markdown] → [Visual]
    • “Use visual editor by default for new documents”の項目に☑
    • “Soft-wrap R Markdown files”にも☑を入れると、右側にアウトラインが出ます
  • 欠点として、少し動作が遅い。簡単なものはMarkdownで書く方が速い
  • 表などはVisualモードがおすすめ

16.11 コードチャンクの挿入

16.11.1 ショートカットキーが便利:[Ctrl] + [Alt] + [I](Windows)、[Command] + [Option] + [I](Mac)

  • このコードの中はRです。Rで使う関数などを自由に指定できます。
  • 以下のチャンク内でないと、動きません。

```{r}
```

dat <- c(1, 4, 6)

mean(dat)
## [1] 3.666667
plot(dat)

  • {r}の中にもいろいろな指定ができます。

    • コードを非表示にして結果だけを表示させたい(オープンサイエンスではないですが)
## [1] 3.666667
  • チャンクのオプションは沢山あるので、その都度チートシートを参照するとよいです。

16.12 Let’s 実践

  • 以下をドキュメントチャンクとコードチャンクを使って再現してください。

16.13 食費の合計

  • 以下は、名古屋旅行で使った食費の合計である。

    • 注! hitsuはひつまぶし、misoは味噌カツを表す。
hitsu <- 1300 * 2

miso <- 1000 * 2

total <- sum(hitsu, miso)

16.14 答え合わせ

## 食費の合計
- 以下は、名古屋旅行で使った食費の合計である。

  - **注!** *hitsu*はひつまぶし、*miso*は味噌カツを表す

\```{r}
hitsu <- 1300 * 2

miso <- 1000 * 2

total <- sum(hitsu, miso)
\```

16.15 2. R Markdownでまとめた結果を共有することができる

  • YAMLヘッダーのoutputを変更するだけ!

16.15.1 Wordに出力

16.15.2 Before

title: "Untitled"
output: html_document
date: "2024-04-15"

16.15.3 After

title: "Untitled"
output: word_document
date: "2024-04-15"
  • テンプレートを追加することも可能。テンプレートはきちんとレベル分けの設定などを行っておく必要あり(設定の仕方)

16.15.4 Power Pointに出力

  • 図や表は必ず新しいページに表示されるなど、knitした後の修正が面倒。
title: "Untitled"
output: powerpoint_presentation
date: "2024-04-15"

16.15.5 HTML slideに変更

title: "Untitled"
output: ioslides_presentation
date: "2024-04-15"
  • #で定義するレベル分けでスライドの区切りが代わる

    • #でスライドのセクション見出し
    • ##で新しいページ
    • ###ページ内の太文字
  • 枠にとらわれない!

    • 以下のチャンクを先頭に入れると、スクロール可能なスライドになる(チャンク内はrではなく、=htmlにする)。
    • 注意点として、タッチパッドや、マウスホイールでスクロールできますが、スクロールバーを掴んでスクロールはできません。
<style>
  slides > slide {
    overflow-x: auto !important;
    overflow-y: auto !important;
}
</style>

16.16 HTML形式だと、簡単にウェブサイトにできます

  • リンクで他者に共有できます。
  • 以下の二つは無料で利用できるが、無料版の場合、リンクを知る人だれもが閲覧できるので注意

16.16.1 RPubsを使う

  • コメント機能もあるので、「発表へのコメントは匿名でこちらへ」みたいにできそう。
  • 使い方の解説

16.16.2 Githubを使う

  • Githubとは、コードのバージョン管理をするツール。共同編集可能。
  • 今回は一番簡単な方法で実行します。しかし、Git(hub)をフルで使いこなせば、ファイルのバージョン管理、共同編集などが可能でより再現可能な資料作成に一歩近づくと思います。R Studioとの連携も可能。
  • 使い方の解説

16.17 3. 様々なパソコンで同じ分析環境を再現することができる

16.17.1 パッケージのバージョン管理:renvパッケージ

  • reproducible environments(再現性のある分析環境)の略

  • RのプロジェクトごとにRの環境を作る。同じパソコンで、同じ名前でバージョンが異なるパッケージを使うことができる。

  • 旧バージョンを試しに使ってみたい場合が、今のバージョンも記録しておきたいときに!

  • プロジェクトディレクトリを相手に共有できる!別のパソコンで分析したいときにも!

  • Let’s インストール

install.packages("renv")
  • 使用する3つの関数

    1. init関数:パッケージ管理の開始を宣言
    2. snapshot関数:パッケージ情報の保存
    3. restore関数:パッケージ情報の復元

16.17.2 バージョン管理の開始

  • 以下のコマンドを走らせると、プロジェクト内で使用しているパッケージを、RやRmdファイルなどから検出します。そして、そのバージョンの情報をrenv.lockファイルに保存します。
renv::init()
  • 最初に実行すると、以下のメッセージが表示されます。
renv: Project Environments for R

Welcome to renv! It looks like this is your first time using renv.
This is a one-time message, briefly describing some of renv's functionality.

renv will write to files within the active project folder, including:

  - A folder 'renv' in the project directory, and
  - A lockfile called 'renv.lock' in the project directory.

In particular, projects using renv will normally use a private, per-project
R library, in which new packages will be installed. This project library is
isolated from other R libraries on your system.

In addition, renv will update files within your project directory, including:

  - .gitignore
  - .Rbuildignore
  - .Rprofile

Finally, renv maintains a local cache of data on the filesystem, located at:

  - "C:/Users/terai-masato/AppData/Local/R/cache/R/renv"

This path can be customized: please see the documentation in `?renv::paths`.

Please read the introduction vignette with `vignette("renv")` for more information.
You can browse the package documentation online at https://rstudio.github.io/renv/.
Do you want to proceed? [y/N]: 
  • yを押して進むと、開いているプロジェクトのあるディレクトリにrenvというフォルダーが作成されます。その中に、3つのファイルと、1つのディレクトリが作成されています。また、renv.lockというファイルも同じディレクトリに作成されます。新しく作成されたものは、すべてrenvパッケージの利用に必要なので、削除しないでください。
- "C:/Users/terai-masato/AppData/Local/R/cache/R/renv" has been created.
- Linking packages into the project library ... [33/33] Done!
- Resolving missing dependencies ... 
# Installing packages --------------------------------------------------------
The following package(s) will be updated in the lockfile:

# CRAN -----------------------------------------------------------------------
- base64enc     [* -> 0.1-3]
- bslib         [* -> 0.5.1]
- cachem        [* -> 1.0.8]
- cli           [* -> 3.6.1]
- digest        [* -> 0.6.33]
- ellipsis      [* -> 0.3.2]
- evaluate      [* -> 0.23]
- fastmap       [* -> 1.1.1]
- fontawesome   [* -> 0.5.2]
- fs            [* -> 1.6.3]
- glue          [* -> 1.6.2]
- highr         [* -> 0.10]
- htmltools     [* -> 0.5.7]
- jquerylib     [* -> 0.1.4]
- jsonlite      [* -> 1.8.7]
- knitr         [* -> 1.45]
- lifecycle     [* -> 1.0.4]
- magrittr      [* -> 2.0.3]
- memoise       [* -> 2.0.1]
- mime          [* -> 0.12]
- prettydoc     [* -> 0.4.1]
- R6            [* -> 2.5.1]
- rappdirs      [* -> 0.3.3]
- renv          [* -> 1.0.7]
- rlang         [* -> 1.1.2]
- rmarkdown     [* -> 2.25]
- sass          [* -> 0.4.7]
- stringi       [* -> 1.7.12]
- stringr       [* -> 1.5.0]
- tictoc        [* -> 1.2]
- tinytex       [* -> 0.48]
- vctrs         [* -> 0.6.4]
- xfun          [* -> 0.41]
- yaml          [* -> 2.3.7]

The version of R recorded in the lockfile will be updated:
- R             [* -> 4.3.2]

- Lockfile written to "~/LET/LET_Workshop_2024/materials_LETworkshop_2024/renv.lock".

Restarting R session...

- Project '~/LET/LET_Workshop_2024/materials_LETworkshop_2024' loaded. [renv 1.0.7]

16.17.3 パッケージ情報の保存

  • パッケージの追加・更新・削除を行ったら、snapshot関数を使ってrenv.lockファイルを更新します。これを忘れると、バージョン情報が変更されないので、注意。

  • 試しに、新しいパッケージをインストールしましょう。今回は、Rに関する様々な名言を含んでいるfortunesパッケージをインストールしましょう。興味のある方はこちらにリストがあります(R Fortunes: Collected Wisdom)。

install.packages("fortunes")
packageVersion("fortunes")
## [1] '1.5.4'
fortunes::fortune(which = 78)
## 
## R is the lingua franca of statistical research. Work in all other languages
## should be discouraged.
##    -- Jan de Leeuw (as quoted by Matt Pocernich on R-help)
##       JSM 2003, San Francisco (August 2003)
fortunes::fortune(which = 386)
## 
## If we put in a function into rstan that dropped chains, people would use it.
##    -- Ben Goodrich (about (not) discarding selected chains from a stanfit
##       object)
##       Stan-users (December 2016)
  • 今回の追加をrenv.lockファイルに追加しましょう。
renv::snapshot()
The following package(s) will be updated in the lockfile:

# CRAN -----------------------------------------------------------------------
- fortunes   [* -> 1.5-4]

Do you want to proceed? [Y/n]: 
  • ファイルが更新される。
- Lockfile written to "~/LET/LET_Workshop_2024/materials_LETworkshop_2024/renv.lock".
  • renvフォルダーの中の、library > R-あなたのバージョン > あなたのパソコンPlatformを開くと、パッケージの名前と同じフォルダ(fortunes)が追加されています(五十音順になっているので見つけやすいです)。

16.17.4 パッケージ情報の復元

  • 記録しておくことで、1)パッケージを前のバージョンに戻したり、2)他のパソコンにプロジェクトの分析環境を整えたりすることができる。

  • パッケージの更新では、お馴染みのinstall.packages関数や、update.packages関数、remove.packages関数を使うが、renv関数で管理しているプロジェクト内では、これらの関数はrenv関数内のパッケージを呼び出している。特に、バージョンを指定したパッケージのインストールがしやすくなっている。

  • 以下のように、

    • 今回は、fortunesパッケージの古いバージョンをインストールする。
  • 最初に、remove.packagesfortunesパッケージを削除。

  • 注!ここでrenv::snapshot()はやらない。やってしまうと、renv.lockからも削除され、戻らなくなってしまう。

install.packages("fortunes@1.4-0")
# Installing packages --------------------------------------------------------
- Installing fortunes ...                       OK [linked from cache]
Successfully installed 1 package in 22 milliseconds.

The following loaded package(s) have been updated:
- fortunes
Restart your R session to use the new versions.
  • restart(quit session)をして再度開く。
  • renv.lockファイルは確認すると、1.5-4のまま!
  • しかし、パッケージのバージョンは1.4.0!
packageVersion("fortunes")
fortunes::fortune(which = 78)
fortunes::fortune(which = 386)
  • 元に戻す場合は、renv::restore()
renv::restore()
The following package(s) will be updated:

# CRAN -----------------------------------------------------------------------
- fortunes   [1.4-0 -> 1.5-4]

Do you want to proceed? [Y/n]: 

注意
・ パッケージによっては、手動でのダウンロードが必要なものがあります。その場合、エラーメッセージでどのパッケージのインストールができないのか表示されます。エラーメッセージに表示されているパッケージを見て、手動でそれをインストールします。

16.18 Rのバージョン管理

16.18.1 Windows

  • [Tools] → [Global Options] → [R version]をクリックすると、過去にそのPCで使用していたRのバージョンが記録されている。

16.18.2 Mac

  • Windowsのようなセレクトボタンがない!
  • RSwitchをダウンロードする必要あり

16.19 再現性をさらに高める工夫

16.19.1 R Markdownに含めておきたい情報

16.19.2 日付、日時

  • いつ作成されたファイルで、更新はされたことあるのかを明記することが重要
    • デフォルトでは、ファイルの作成日を手動で切り替えないといけない。
  • r Sys.Date:2022-01-20
title: "Untitled"
author: "Masato Terai"
date: "`r Sys.Date()` in JST"   # ``と""で囲うのを忘れない。
output: html_document
  • r Sys.time:2022-01-20 21:36:36
title: "Untitled"
author: "Masato Terai"
date: "`r format(Sys.time(), '%Y-%m-%d %X')`"   # ``と""で囲うのを忘れない。
output: html_document
  • 寺井おすすめ
title: "Untitled"
author: "Masato Terai"
date: "作成日:2024-05-20, 最終更新(JST): `r format(Sys.time(), '%Y-%m-%d %X')`"
output: html_document

16.19.3 Rのバージョン & 使用したRのパッケージのバージョン

  • Rのバージョンやパッケージのバージョン情報など
sessionInfo()
## R version 4.3.2 (2023-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 11 x64 (build 22621)
## 
## Matrix products: default
## 
## 
## locale:
## [1] LC_COLLATE=Japanese_Japan.utf8  LC_CTYPE=Japanese_Japan.utf8   
## [3] LC_MONETARY=Japanese_Japan.utf8 LC_NUMERIC=C                   
## [5] LC_TIME=Japanese_Japan.utf8    
## 
## time zone: Asia/Tokyo
## tzcode source: internal
## 
## attached base packages:
## [1] grid      stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] exactRankTests_0.8-35 nonpar_1.0.2          vcd_1.4-13           
##  [4] sjstats_0.18.2        performance_0.13.0    ggeffects_1.3.2      
##  [7] tictoc_1.2.1          arm_1.14-4            lme4_1.1-37          
## [10] Matrix_1.6-5          kableExtra_1.3.4.9000 sjPlot_2.8.15        
## [13] emmeans_1.8.9         gt_0.10.0             rstan_2.32.5         
## [16] StanHeaders_2.32.5    brms_2.20.4           hdm_0.3.2            
## [19] MASS_7.3-60           olsrr_0.6.1           beeswarm_0.4.0       
## [22] rstanarm_2.26.1       Rcpp_1.0.11           magick_2.8.5         
## [25] gmodels_2.19.1        gganimate_1.0.9       gridExtra_2.3        
## [28] lubridate_1.9.3       forcats_1.0.0         stringr_1.5.0        
## [31] purrr_1.0.2           readr_2.1.4           tidyr_1.3.0          
## [34] tibble_3.2.1          tidyverse_2.0.0       vioplot_0.5.0        
## [37] zoo_1.8-12            sm_2.2-6.0            psych_2.3.9          
## [40] moments_0.14.1        patchwork_1.3.0       dplyr_1.1.3          
## [43] ggplot2_3.5.1        
## 
## loaded via a namespace (and not attached):
##   [1] bitops_1.0-7            matrixStats_1.1.0       httr_1.4.7             
##   [4] webshot_0.5.5           RColorBrewer_1.1-3      insight_1.0.1          
##   [7] doParallel_1.0.17       tools_4.3.2             backports_1.4.1        
##  [10] sjlabelled_1.2.0        utf8_1.2.4              R6_2.6.1               
##  [13] DT_0.30                 lazyeval_0.2.2          mgcv_1.9-0             
##  [16] nortest_1.0-4           withr_3.0.2             Brobdingnag_1.2-9      
##  [19] prettyunits_1.2.0       cli_3.6.1               shinyjs_2.1.0          
##  [22] labeling_0.4.3          sass_0.4.9              robustbase_0.99-2      
##  [25] mvtnorm_1.2-3           QuickJSR_1.0.7          systemfonts_1.2.1      
##  [28] svglite_2.1.3           qqplotr_0.0.6           DHARMa_0.4.7           
##  [31] pwr_1.3-0               rstudioapi_0.17.1       generics_0.1.3         
##  [34] gtools_3.9.4            crosstalk_1.2.0         vroom_1.6.5            
##  [37] car_3.1-2               distributional_0.3.2    inline_0.3.19          
##  [40] loo_2.6.0               abind_1.4-5             lifecycle_1.0.4        
##  [43] yaml_2.3.10             carData_3.0-5           promises_1.2.1         
##  [46] gdata_3.0.0             crayon_1.5.3            fortunes_1.5-4         
##  [49] miniUI_0.1.1.1          lattice_0.21-9          haven_2.5.3            
##  [52] chromote_0.4.0          pillar_1.10.1           knitr_1.49             
##  [55] boot_1.3-28.1           estimability_1.4.1      shinystan_2.6.0        
##  [58] codetools_0.2-19        glue_1.6.2              V8_4.4.1               
##  [61] data.table_1.17.0       gifski_1.32.0-1         vctrs_0.6.4            
##  [64] png_0.1-8               Rdpack_2.6.2            twosamples_2.0.1       
##  [67] gtable_0.3.6            datawizard_1.0.0        cachem_1.1.0           
##  [70] xfun_0.49               rbibutils_2.3           mime_0.12              
##  [73] pracma_2.4.4            coda_0.19-4.1           reformulas_0.4.0       
##  [76] survival_3.5-7          pbmcapply_1.5.1         iterators_1.0.14       
##  [79] shinythemes_1.2.0       ellipsis_0.3.2          nlme_3.1-163           
##  [82] xts_0.13.1              bit64_4.6.0-1           threejs_0.3.3          
##  [85] progress_1.2.3          tensorA_0.36.2          bslib_0.9.0            
##  [88] colorspace_2.1-0        mnormt_2.1.1            tidyselect_1.2.1       
##  [91] processx_3.8.4          bit_4.5.0.1             compiler_4.3.2         
##  [94] curl_5.1.0              rvest_1.0.4             see_0.8.4              
##  [97] xml2_1.3.6              plotly_4.10.4           bayestestR_0.15.1      
## [100] colourpicker_1.3.0      posterior_1.5.0         bookdown_0.42          
## [103] caTools_1.18.2          checkmate_2.3.0         scales_1.3.0           
## [106] dygraphs_1.1.1.6        lmtest_0.9-40           DEoptimR_1.1-3         
## [109] digest_0.6.33           goftest_1.2-3           minqa_1.2.6            
## [112] rmarkdown_2.29          benchmarkmeData_1.0.4   htmltools_0.5.8.1      
## [115] pkgconfig_2.0.3         base64enc_0.1-3         fastmap_1.2.0          
## [118] rlang_1.1.2             htmlwidgets_1.6.4       shiny_1.8.0            
## [121] farver_2.1.1            jquerylib_0.1.4         jsonlite_1.8.9         
## [124] magrittr_2.0.3          Formula_1.2-5           bayesplot_1.10.0       
## [127] parameters_0.24.1       munsell_0.5.1           stringi_1.7.12         
## [130] plyr_1.8.9              pkgbuild_1.4.5          parallel_4.3.2         
## [133] sjmisc_2.8.9            splines_4.3.2           hms_1.1.3              
## [136] qqconf_1.3.2            ps_1.8.1                igraph_1.5.1           
## [139] opdisDownsampling_1.0.1 markdown_1.13           effectsize_1.0.0       
## [142] reshape2_1.4.4          stats4_4.3.2            rstantools_2.3.1.1     
## [145] evaluate_1.0.3          RcppParallel_5.1.7      modelr_0.1.11          
## [148] nloptr_2.0.3            tzdb_0.4.0              foreach_1.5.2          
## [151] tweenr_2.0.3            httpuv_1.6.12           benchmarkme_1.0.8      
## [154] broom_1.0.7             xtable_1.8-4            later_1.3.1            
## [157] viridisLite_0.4.2       websocket_1.4.2         timechange_0.2.0       
## [160] bridgesampling_1.1-2

16.19.4 パソコンのスペック

  • CPUとコア数とRAM
    • CPU
    • コア数(論理コア)
      • 「論理コア」は「スレッド」「論理プロセッサ」、「仮想コア」とも呼ばれる
      • CPUとコアについて
    • RAM (Random Access Memory)
      • ストレージ(SSDやHDD)ではなく、データを一時保存する場所
#install.packages("benchmarkme") # 入れていないかたは先にインストールしてください
benchmarkme::get_cpu()
## $vendor_id
## [1] "GenuineIntel"
## 
## $model_name
## [1] "13th Gen Intel(R) Core(TM) i9-13900K"
## 
## $no_of_cores
## [1] 32
benchmarkme::get_ram()
## 137 GB

16.19.5 処理にかかった時間

  • 時間のかかる分析を行う人は明記する方が親切!
    • いつ終わるのか分からない見通しのつかない分析を実行するのは怖いです。コア数に加え処理にかかった時間が記載されていればおおよその見通しがつきます。
#install.packages("tictoc") # 入れていないかたは先にインストールしてください
library(tictoc)

tic() #測定開始

I <-NULL
for(i in 1:100000){
  I <- c(I,  i)}

toc() #測定終了
## 5.52 sec elapsed

16.20 関数の呼び出し方

  1. library(関数名):一番メジャー

  2. パッケージ名::関数名:あまりメジャーじゃない

  3. require(関数名)library()とほとんど変わらないが、関数を読み込めたかどうかを論理値で返すことができる。関数が読み込めない(=パッケージを入れていない)場合に、まずそのパッケージを読み込んで、処理に進ませるみたいな用途で使える。

if (require(パッケージ名) == FALSE) {
 install.packages(パッケージ名)
} else {
 #パッケージを利用してやろうとしていたことをここに書く
}

16.20.1 関数名が被ることがある(xxxはマスクされています)

  • グラフの透明度を設定するalpha関数(ggplot2パッケージ)と、信頼性係数を出すalpha関数(psychパッケージ)

    • エラーの原因になる場合あり。::で定義すると回避できる。

16.20.2 関数とパッケージの対応は覚えにくい

  • R Markdownのファイルの冒頭にこのようにまとめてある。確かに、その分析で使うパッケージが一目瞭然だが、個別の処理においてどのパッケージが読み込まれたのか分かりにくく、そのコードを参考に書き換えにくくなる。

  • どのパッケージに属する関数なのか一目瞭然。ただしその都度パッケージ名を書くので、コードが長くなるという欠点も

16.20.3 Gitによるコードのバージョン管理

  • Git(ギット):無料で使用できるバージョン管理システム。ファイルの変更履歴を記録し,変更前の状態に戻したり,別の状態と比べたりしながらファイルの管理やプログラム開発を補助するシステムのこと。

  • 基本的にRのようにコードで命令する必要があるが、RStudioと連携すれば一部の機能はクリックなどで行うことができる。

16.21 まとめ

  1. R Markdownでは、YAMLヘッダー、コードチャンク、ドキュメントチャンクを使って分析結果をまとめることができる。

    • 研究ごとにプロジェクトを作成しておくとよい
  2. 作成したR Markdownファイルは、Word、HTMLファイル、Power Pointなど様々な形式に出力できる。

    • RPubsやGithubを使えば、ウェブページとして共有できる
  3. RのパッケージやR自体のバージョンは切り替えて使うことができる。

    • 再現しようとする分析ファイルに記載されたバージョンに合わせて分析することでより再現性が高まる


16.22 次週までの課題

  • なし。

16.23 期末課題レポートについて

  • 期末課題の詳細についてはTACTにてアナウンスします。

    • 共有されたデータを基に、分析を行い、その結果を報告してください。HTML形式での共有になります。

      • 以下の点が評価の範囲として含まれます

        • 研究課題が明記してあるか(自分自身のデータを使う方以外は、こちらで研究課題を設定しています。)

        • 記述統計、作図などメインの分析だけでなく、データの概要や特徴などがきちんと説明されているか(論文のResultsセクションをイメージしてください)

        • 分析の結果が正確に、また分かりやすく報告されているか

          • 先行研究との比較などは書かなくてもよいですが、今回の結果を踏まえて研究課題に対してどのような問いが得られたのかも記載してください
  • 締め切りは8月8日金曜日の17時です。

  • 未提出・再提出課題についても8月8日金曜日の17時まで受け付けます。提出はterai.research [at] gmail.com宛てに送ってください。