📌 はじめに
この記事では、R言語の基本文法を図解とコードで分かりやすく解説します。統計解析やデータサイエンスを始めたい方におすすめの内容です。
🖥️ R言語ってどんな言語?
R言語は以下のような場面でよく使われます:
- 統計解析・データ分析
- 機械学習
- データ可視化(グラフ作成)
- 学術研究・論文執筆
🌍 R言語の特徴(図解)
🧰 1. 開発環境の準備
🔧 Rをインストールする
R 4.3以上が推奨です。
RStudioをインストール(推奨)
統合開発環境としてRStudioが便利です。
バージョン確認
R.version.string
# 出力例: [1] "R version 4.3.1 (2023-06-16)"
🚀 2. 「Hello, World!」を動かしてみる
print("Hello, World!")
# または
"Hello, World!"
R言語では最後の式が自動的に表示されます。
📘 3. 変数とデータ型
R言語は統計解析向けのデータ型が豊富です。
主な型一覧
| 型 | 説明 | 例 |
|---|---|---|
| numeric | 数値 | 10, 3.14 |
| integer | 整数 | 10L |
| character | 文字列 | "Hello" |
| logical | 論理値 | TRUE / FALSE |
| vector | ベクトル | c(1, 2, 3) |
| data.frame | データフレーム | データテーブル |
サンプルコード
# 数値
age <- 25
height <- 180.5
# 文字列
name <- "Taro"
# 論理値
is_member <- TRUE
# ベクトル(配列)
nums <- c(10, 20, 30)
# データフレーム
df <- data.frame(
name = c("Taro", "Hanako"),
age = c(25, 22),
score = c(85, 92)
)
Point: 代入演算子は
<-または=が使えますが、R言語では<-が推奨されます。
🔁 4. 条件分岐(if / ifelse)
if 文
score <- 80
if (score >= 90) {
print("Excellent!")
} else if (score >= 70) {
print("Good!")
} else {
print("Try again")
}
ifelse関数(ベクトル対応)
R言語特有の便利な関数です。ExcelのIF関数のように使えます。
scores <- c(95, 75, 65, 88)
result <- ifelse(scores >= 80, "合格", "不合格")
print(result)
# [1] "合格" "不合格" "不合格" "合格"
🔄 5. 繰り返し
for 文
for (i in 1:5) {
print(i)
}
while 文
i <- 1
while (i <= 3) {
print(i)
i <- i + 1
}
apply関数(推奨)
R言語ではループ処理よりも、ベクトル全体に関数を適用する apply 系関数が好まれます。
# ベクトルに関数を適用
nums <- c(1, 2, 3, 4, 5)
squared <- sapply(nums, function(x) x^2)
print(squared)
# [1] 1 4 9 16 25
📦 6. ベクトルとデータフレーム
ベクトル操作
重要: R言語のインデックスは 「1」から始まります。
# ベクトルの作成
nums <- c(10, 20, 30, 40, 50)
# 要素へのアクセス
print(nums[1]) # 10 (Rは1から始まる!)
print(nums[2:4]) # 20 30 40
# ベクトル演算
print(nums * 2) # 20 40 60 80 100
print(sum(nums)) # 150
print(mean(nums)) # 30
データフレーム操作
# データフレームの作成
df <- data.frame(
name = c("Taro", "Hanako", "Jiro"),
age = c(25, 22, 30),
score = c(85, 92, 78)
)
# 表示
print(df)
# 列へのアクセス
print(df$name)
print(df[, "age"])
# 行へのアクセス
print(df[1, ]) # 1行目
# 条件抽出
print(df[df$age >= 25, ])
🧱 7. 関数
繰り返し使う処理をまとめます。
基本的な関数
add <- function(a, b) {
return(a + b)
}
result <- add(3, 5)
print(result) # 8
デフォルト引数
greet <- function(name = "Guest") {
message <- paste("Hello,", name)
return(message)
}
print(greet()) # "Hello, Guest"
print(greet("Taro")) # "Hello, Taro"
📊 8. データ可視化(グラフ作成)
R言語の強力な機能の一つです。
基本的なプロット
# 散布図
x <- c(1, 2, 3, 4, 5)
y <- c(2, 4, 5, 4, 6)
plot(x, y, main="散布図", xlab="X軸", ylab="Y軸")
# ヒストグラム
set.seed(123) # 再現性のため乱数を固定
data <- rnorm(1000) # 正規分布の乱数
hist(data, main="ヒストグラム", col="lightblue")
# 箱ひげ図
boxplot(iris$Sepal.Length ~ iris$Species,
main="品種別の萼片の長さ")
ggplot2(推奨)
実務では、より美しく柔軟な ggplot2 が標準的に使われます。
# パッケージのインストール
install.packages("ggplot2")
library(ggplot2)
# 散布図
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
geom_point() +
labs(title="アヤメのデータ", x="萼片の長さ", y="萼片の幅")
📚 9. パッケージ管理
# パッケージのインストール
install.packages("dplyr")
# パッケージの読み込み
library(dplyr)
# dplyrを使ったデータ操作
result <- iris %>%
filter(Species == "setosa") %>%
select(Sepal.Length, Sepal.Width) %>%
summarise(
mean_length = mean(Sepal.Length),
mean_width = mean(Sepal.Width)
)
print(result)
主要パッケージ
| パッケージ | 用途 |
|---|---|
| dplyr | データ操作 |
| ggplot2 | グラフ作成 |
| tidyr | データ整形 |
| readr | データ読み込み |
| caret | 機械学習 |
📝 10. 実践課題
👉 課題
「数値ベクトルから最大値、最小値、平均値を返す関数を作成せよ」
解答例
get_statistics <- function(nums) {
result <- list(
max = max(nums),
min = min(nums),
mean = mean(nums),
median = median(nums),
sd = sd(nums)
)
return(result)
}
# テスト
data <- c(5, 2, 9, 1, 7, 3)
stats <- get_statistics(data)
print(paste("最大値:", stats$max))
print(paste("最小値:", stats$min))
print(paste("平均値:", stats$mean))
print(paste("中央値:", stats$median))
print(paste("標準偏差:", stats$sd))
🎉 まとめ
この記事では、R言語の基本文法を以下のように解説しました。
- 開発環境: RとRStudioの準備
- 基本構文: 変数、if文、ループ
- データ構造: ベクトル、データフレーム
- 可視化: plot、ggplot2
Java/Python/PHP/R言語の比較
| 項目 | Java | Python | PHP | R言語 |
|---|---|---|---|---|
| 型宣言 | 必須 | 不要 | 不要 | 不要 |
| インデックス | 0から | 0から | 0から | 1から |
| 代入 | = |
= |
= |
<- (推奨) |
| 主な用途 | 業務システム | AI/汎用 | Web | 統計解析 |
| 得意分野 | 大規模開発 | 機械学習 | Web開発 | データ分析 |
次のステップ
- tidyverseでモダンなデータ操作
- ShinyでインタラクティブなWebアプリ
- R Markdownでレポート作成
統計解析やデータサイエンスを学ぶ方の参考になれば嬉しいです!
参考になったら「いいね」👍 お願いします!