R入門

Author

xjorv

Published

September 29, 2023

はじめに

その昔(2000年代初頭)、Rを初めて学ぶときには、CRANのホームページから英語のマニュアルを入手し、読むしかありませんでした。いくつかのRの教科書がすでに出版されていましたが、多くの教科書はプログラミングの入門については取り扱っておらず、統計手法の使い方、高度な統計について、あるいはパッケージのマニュアルなどについての説明が記載されていました。2000年代初頭に大学生であった私にはRはとても難しく、英語のマニュアルも読めず、インターネットに落ちているコードをコピペしては自分のデータを入力し、使い方もよくわからずに統計の計算をしていたものでした。簡単な統計はExcelや、怪しげなフリーソフトを用いて行っていました。どのソフトにも手法がないような統計の手法にだけ、Rを用いたのです。

時は流れ、2010年代、私は再びRと向き合うことになりました。その当時、研究で得たデータに対して、最小二乗法を用いて回帰を行い、測定できないパラメータを計算したかったのです。当時は最小二乗法しか回帰の方法を知らず、最小二乗法を解くためにRubyを勉強していました。Rubyでも二乗誤差の計算できることは分かっていましたが、配列(Rでいうところのベクターみたいなもの)の計算には繰り返し計算を使うしかなく、二乗誤差の計算を組むだけでも大変でした。二乗誤差を計算しても、最小値を求めることがどうしてもできず、今でいうところのグリッドサーチで最小値を求めようとしていました。

グリッドサーチでは到底最小値が求まらないことは分かっていました。そこで、私はRという統計学の言語のことを思い出したのです。しかし、当時の私は海外におり、教科書を買うこともできませんでした。

その時、Rを学ぶ光明となったのは、R-tipsというホームページでした。R-tipsはデザインこそ昔ながらのHTMLでしたが、Rを一から学ぶための情報がすべて含まれており、始めから最後まで読み通し、学ぶことでRの使い方を覚えることができました。その後、Rを用いてマイクロアレイ(今でいうところの高速シークエンサーによるトランスクリプトーム)のデータを取り扱うようになり、(Rで)マイクロアレイデータ解析 (門田幸二 2022)というホームページに書かれているコードを読むようになりました。R-tipsで学んだことを参考に、「(Rで)マイクロアレイデータ解析」のコードを読み解き、やがて私はRがある程度使えるようになりました。この2つのホームページがあったから、私はRを使えるようになったと言えます。

そして時は流れ202X年、私はしがないサラリーマンになりました。(Rで)マイクロアレイデータ解析のホームページはまだ更新されており、生き残っています。しかし、R-tipsのホームページはもうありません。R-tipsは教科書 (舟尾暢男 2016) になったのです。日本語でどこでも読めて、Rを一から学べるホームページはなくなってしまいました。今でこそ私は英語のマニュアルを読み、理解することができます。しかし、Rも英語も何も知らない若年の初学者であったなら、Rを学ぶことを躊躇したでしょう。もちろん、昔と比べるとRについての情報はネット上にたくさん転がっており、落穂ひろいしながらRを学んでいくことはできます。しかし、R-tipsがそうであったように、一つのホームページで、広告などもなく、いちいち検索することもなくRについての情報を一度に得ることは(教科書を除けば)できなくなってしまいました。

私も稀にRの初学者に使い方を教えようとすることがあります。しかし、一か所にRの基本的な使い方に関する情報が集まったような資料はあまりありません。プレゼンテーションを用いて教えるにしても、プログラミング言語の学習にはプレゼンテーションはあまり向いていません。すべてをプレゼンテーションで伝えようとするととても時間がかかってしまいます。ですので、大したR使いではない私がこのようなものを作るのはどうかとは思いつつ、R-tipsのようなものを作ることにしました。

Rでホームページを作る、教科書を作ることは昔は現実的ではありませんでした。しかし、今ではRを使って簡単なWebアプリを作ったり、教科書を作ったりすることは比較的簡単にできます。この文書もRで作成しています。私が学び始めたときのように、統計しかできないプログラミング言語ではないのです。

とは言え、Rは統計のプログラミング言語です。Webを使った本格的なサービスを作りたい、データベースに保存されたデータを常時解析し、オンライン上でダッシュボードを表示したいなど、もっと複雑なことがしたいなら別の言語、例えばPythonを学ぶとよいでしょう。ad hocな、その場一回限りの統計や計算こそ、Rが最も生きる場面です。眼の前にある統計データを解析したい、統計の手法を試したいというのであれば、Rは最適な言語のひとつであると言えます。

この文書を読むことによって、皆さんがRに親しみ、データやグラフを自由自在に扱えるようになれば、そして私がR-tipsに助けられたように、Rの初学者のためになれば、これ以上の喜びはありません。

著作権について

この文書はクリエイティブ・コモンズ CC BY-NC-SAに従い、複製、頒布、展示、実演を行うにあたり、著作権者の表示を要求し、非営利目的での利用に限定し、作品を改変・変形・加工してできた作品についても、元になった作品と同じライセンスを継承させた上で頒布を認めます。

元々無料の資料を提供することが目的であるため、非営利目的で、読みやすく、より良い資料に加工してもらえるのであれば、どのように利用していただいても問題ありません。

記載の方針

このページでは、基本的にプログラミング初学者を対象として、プログラミングの基礎から統計・グラフ作成の基礎までを取り扱います。複雑な統計手法については、別の資料を参照しつつ、紹介程度に留めます。参考資料の一覧は参考文献に示します。

普通の教科書では、同じ内容を複数の章に繰り返し記載することは避けます。紙に印刷する教科書では、反復があるとそれだけ教科書が厚くなり、持ち運びにも印刷等のコスト面にもデメリットがあるからです。しかし、オンラインの無料の教科書ではこのようなコストはほぼ無視できます。

同じ内容を何度も繰り返すうちに、物事は自然と憶えられるものです。家から学校までの道のりを初めて通る時には道に迷うこともありますが、何度も往復を繰り返すうちに道を憶え、間違えなくなります。学習でも同じことが起こります。このページでは、重要な内容は繰り返し出てくるような記載にしています。何度も同じことを目に入れることで、記憶が定着し、その内容を覚えられることを期待したものです。

と、良くいうと上記のようなことになりますが、実際には重複を個人ですべて叩き潰すのは大変だからやっていない、というだけです。「この内容は前にも見たことがあるなあ」と思ったら、飛ばして読んでもらっても特に問題はありません。

表記方法

Rのスクリプトは以下のようなコードブロックに記載します。

コードブロック
v <- c(1, 2, 3, 4, 5)
mean(v)
## [1] 3

上記のうち、表示の始めに##が付いている部分は、スクリプトを実行したときの結果です。

Rの関数や引数、パッケージ名は、functionsargumentspackagesのように、網掛けの文字で表示します。

本文で説明する内容に付け加えて、参考情報として追加する内容については、以下のようにクリックすると開くブロック(callout)に表示します。

クリックすると開き、内容が表示されます。