よくある質問
関数は、何か入力したものを変換して出力するものです。Rでは、()
の前に関数名を、()
の中に入力するものを書きます。 関数には、プリセットのものからパッケージ(後述)のものまであります。 例として、readr
パッケージのread_csv
関数を示しています。
関数の使い方を忘れた時は、?を関数名の前につけるとヘルプが確認できます。
オブジェクトは、関数を使って処理したデータは格納されているものです。 基本的に、<-
の記号で処理したものを渡します。例として、1, 2, 3の3つの数字を含むinput
というオブジェクトを作成しました。
パッケージは、特定の機能や研究分野に特化した複数の関数をまとめたものです。 基本的に、Rではプリセットで複数の関数が使えますが、データ解析の用途に応じて複数のパッケージを追加して使用します。使用する前には、install.packages()
でパッケージのインストール、library()
でパッケージの読み込みを行う必要があります。
tidyverseは唯一神Hadleyにより創造された宇宙です。 この宇宙に入るための呪文が、library(tidyverse)
です。
library(tidyverse)
read_csv("path/to/file.csv")
|>
は、パイプと呼ばれるコードを読みやすくするための書き方です。 |>
の左辺にあるものを右辺の入力に使います。 より正確にいうと、左辺の結果が右辺の第一引数になります。
簡単な例を見ていきましょう。 下の2行をそれぞれ実行した結果は同じになります。
iris |> summary() # パイプを使った書き方
summary(iris) # 通常の書き方
|>
は、Rのバージョンが4.1.0以降で使用することができるようになりました。(つまり、Rのバージョンが古い場合は使えません。)
ちなみに、%>%
もパイプで、ネット上や書籍ではこちらの書き方もよく見かけることがあると思います。 こちらはmagrittr
パッケージを読み込むことで使えるようになります。
|>
と%>%
の違いはあるのか?と言われると、答えはあります! しかし、今のところはほぼ同じものと思っていただいて問題ありません。
+
は、ggplot2でレイヤーを重ねる/追加する場合に使用する「パイプ」です。
これらは、基本的に文字化けの原因になります。可能な限り、半角英数字の使用をおすすめします。
データの読み込みで区切り文字として認識することがあるので、アンダースコア_
を推奨します。カンマやハイフン、スペースは避けた方が良いです。
もう一度はじめからやり直しです。基本的にRでの処理は上書き方式であることを覚えておきましょう。 - データの管理のためにも、各プロセスで異なるオブジェクト名を指定しましょう。 - 前準備を終えたデータをwrite.csv
などの書き出し関数で保存しておくことも良いと思います。そうすることで、何かあった場合には、そのデータを読み込むところから再開できます。
Rの関数では、入力に特定の型の変数を指定しているがあります。基本的には、class()
で変数の型は確認することができます。
実数 |
numeric |
as.numeric() |
整数 |
integer |
as.integer() |
論理値 |
logical |
as.logical() |
文字列 |
character |
as.character() |
因子 |
factor |
as.factor() |
日付 |
Date |
as.Date() |
欠測値 |
NA |
|
library(causaldata); data(nhefs)
nhefs |>
select(smokeyrs) |>
class()
[1] "tbl_df" "tbl" "data.frame"
今回のセミナーではそれを推奨しています。もし、現在の環境で実行したい場合は、一度試してみてください。問題が発生するようであれば、インストールの手順に従ってバージョンアップをお願いします。
よくあるエラーメッセージ
ここに記載されていないエラーで困った場合には、エラーメッセージの全体をコピーし、Googleの検索欄にペーストし、最後にRを加えて検索してみてください。
想定される順番で記号が並んでいない可能性があります。主に、カンマが抜けているケースが多いです。
install.packages()
ではパッケージ名をダブルクウォーテーション""
で括る必要があります。
install.packages()
が上手く行っていない可能性があります。
install.packages()
もしくは、library()
が上手く行っていない可能性があります。
オブジェクトが空っぽになっているケース(その前段階の処理が上手く行っていない)や正しくオブジェクト名が指定できていないケース(小文字・大文字など)が想定されます。