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 = "サンプル")
```
# おわりに
サンプル