2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

R言語基礎文法完全ガイド【図解×コード】初心者からデータサイエンスまで

2
Last updated at Posted at 2025-12-01

📌 はじめに

この記事では、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開発 データ分析

次のステップ

  1. tidyverseでモダンなデータ操作
  2. ShinyでインタラクティブなWebアプリ
  3. R Markdownでレポート作成

統計解析やデータサイエンスを学ぶ方の参考になれば嬉しいです!
参考になったら「いいね」👍 お願いします!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?