メインコンテンツへスキップ

Rmarkdownを素のRから使うメモ

    社外団体の活動で少々、集計・グラフ化程度のデータ分析や考察をする必要があり、分析とドキュメンテーションを一元管理できるRmarkdownを、自宅の環境でサクッと使いたい、と思い立つ。

    過去には以下の関連記事は書いたけど、RStudioからRmarkdownを使う方が設定が簡単なのは知ってる。また最近はvs codeにR関連の拡張機能を追加した環境にしてる、Marpとかも便利だし。また今が若手ならPositronを試すかもしれない。
    でも家の貧弱なPCでもサクッと動かしたかったのです。

    Rmarkdownのように分析とドキュメンテーションを一元管理するツールって、pythonだと見つからなかった、調べきれなかっただけかなぁ。

    環境の準備

    自宅のPCに素のRだけ入れる。RStudioを入れないと、pandocを別途入れる必要がある。その手順は以下を参照。

    記事が古いので見栄えが若干違うけど、すぐできた。RStudioって、出てきた当時は社給PCの貧弱なスペックに対してメモリを食うのが気にいらず、こなれた頃は忙しすぎて周囲より導入が遅れたっけ。その割にテキストエディタはTeraPadやサクラエディタやら試してたけど(windows11になってからはnotepadで満足してる笑)。

    各種パラメータ

    はRStudioのページを見ればいい。今はいろんな出力ができるのね。

    簡単な文法はこのあたりで十分。

    R MarkdownでTeX代わりに技術ドキュメントを作成できるまでらしい。

    サンプル

    Rmarkdownのコードが"C:/test/xxx.rmd"にあるとして、Rコンソールから以下を実行すればいい。個別のライブラリのインストールとかは割愛。

    > library(rmarkdown)
    > setwd("C:/test")
    > render("xxx.rmd", output_format = "all")

    あとはRmarkdownのコード(上記でいうxxx.rmdファイル)のサンプルを。提出用のwordと、手元で見やすいhtmlの両方出力できるのが良い。

    ---
    title: "サンプル"
    authot: "サンプル"
    date: '`r format(Sys.time(), "%y/%m/%d")`'
    output:
      html_document:
        toc: yes
        toc_depth: 1 
      word_document:
        toc: yes
        toc_depth: 1 
    ---
    
    ```{r setup, include=FALSE}
    library(ggplot2)      # Graphic package
    library(reshape2)
    library(knitr)        # markdown
    dat <- read.csv("サンプル.csv", row.names=1, na = "", check.names = F)
    
    options(scipen=100)
    knitr::opts_chunk$set(echo = FALSE)
    knitr::opts_chunk$set(eval = TRUE)
    knitr::opts_chunk$set(tidy = TRUE)
    knitr::opts_chunk$set(warning = TRUE)
    knitr::opts_chunk$set(error = FALSE)
    knitr::opts_chunk$set(message = FALSE)
    ```
    
    # サンプル
    サンプル
    
     - サンプル。
     - サンプル。
    
    ## サンプル
    サンプル
    
    ```{r fig.width=10, fig.height=5}
    i <- "サンプル"
    attr <- c(サンプル)
    dat[, i] <- factor(dat[, i], levels = attr)
    dat.attr <- data.frame(table(dat[, i]))
    ggp <- ggplot(dat.attr, aes(x = Freq, y = Var1)) +
      geom_bar(stat = "identity") + labs(x = "サンプル", y = "") + theme_minimal()
    plot(ggp)
    ```
    
    # サンプル
    サンプル
    
    ```{r fig.width=10, fig.height=4}
    i <- "サンプル"
    attr <- c(サンプル)
    dat[, i] <- factor(dat[, i], levels = attr)
    dat.attr <- data.frame(prop.table(table(dat[, i])))
    ggp <- ggplot(dat.attr, aes(x = Freq, y = Var1)) + geom_bar(stat = "identity") +
      labs(title = "サンプル", x = "サンプル", y = "") + theme_minimal()
    plot(ggp)
    
    j <- which(colnames(dat)==i)
    dat[,1+j] <- factor(dat[,1+j], levels=1:5)
    dat.attr <- prop.table(table(dat[, i], dat[,1+j]) %*% 1:5)
    dat.attr <- data.frame(
      name = factor(rownames(dat.attr), levels = attr), value = as.numeric(dat.attr)
    )
    ggp <- ggplot(dat.attr, aes(x = value, y = name)) + geom_bar(stat = "identity") +
      labs(title = "サンプル", x = "サンプル", y = "") + theme_minimal()
    plot(ggp)
    
    dat.attr <- dat[サンプル]
    colnames(dat.attr) <- c("サンプル")
    rownames(dat.attr) <- NULL
    kable(dat.attr, caption = "サンプル")
    ```
    
    # おわりに
    
    サンプル
     
     
    データ利活用まわりでサービス企画してるチーフなんたらサイエンティスト。なおX/twitterもnoteも私個人の意見であり、所属する組織の見解ではありません。 ( 厂˙ω˙ )厂うぇーい …… ○┼ バタッ

    あなたへのおすすめ