Learn in 10 minutes

Learn in 10 minutes

10分で学ぶR言語

Rは統計計算、データ分析、可視化のための強力なプログラミング言語と環境です。このチュートリアルでは、Rプログラミングを始めるための基本的な概念をカバーします。

1. Rの始め方

まずは簡単なプログラムから始めましょう。RまたはRStudioを開いて、次のコードを入力してください:

print("Hello, World!")

Rコンソールでも実行できます。出力は次のようになります:

[1] "Hello, World!"

この簡単なプログラムは、Rの基本的な出力機能を示しています。print()関数はコンソールにテキスト情報を表示します。

2. 基本構文と変数

Rの構文は統計計算とデータ分析のために設計されています。基本的な変数代入と操作を見てみましょう。

# これはコメントです
x <- 5  # <-演算子を使った代入
y = 10   # =演算子を使った代入(あまり使われません)
print(x + y)

Rの基本構文ルール:

  • 代入: 変数代入には<-を使用(推奨)または=
  • コメント: 単一行コメントは#で始まる
  • 関数: 関数呼び出しには括弧()を使用
  • ベクトル: Rはベクトル化されている - 操作はベクトル全体に適用される

3. データ型と構造

Rには統計計算のためのいくつかの基本的なデータ型と構造があります。

3.1 基本データ型

# 数値型(倍精度浮動小数点数)
num <- 3.14
print(class(num))

# 整数型
int <- 42L
print(class(int))

# 文字型(文字列)
text <- "Hello R"
print(class(text))

# 論理型(ブール値)
flag <- TRUE
print(class(flag))

3.2 ベクトル

ベクトルはRの基本的なデータ構造です。数値、文字、論理データを保持できる一次元配列です。

# ベクトルの作成
numeric_vector <- c(1, 2, 3, 4, 5)
character_vector <- c("apple", "banana", "cherry")
logical_vector <- c(TRUE, FALSE, TRUE)

# ベクトル演算
print(numeric_vector * 2)  # 各要素を2倍
print(numeric_vector + 1)  # 各要素に1を加算
print(length(numeric_vector))  # ベクトルの長さを取得

3.3 リスト

リストは異なる型の要素を保持できる柔軟なコンテナです。

# リストの作成
my_list <- list(
  name = "John",
  age = 30,
  scores = c(85, 92, 78),
  active = TRUE
)

# リスト要素へのアクセス
print(my_list$name)
print(my_list[["age"]])
print(my_list[[3]])

3.4 データフレーム

データフレームはRでのデータ分析において最も重要なデータ構造です。行と列を持つ表のようなものです。

# データフレームの作成
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  score = c(88, 92, 85)
)

# データフレームの表示
print(df)
print(str(df))  # データフレームの構造
print(summary(df))  # 要約統計量

4. 基本操作

Rは数学的および論理的操作のための豊富な演算子を提供します。

# 算術演算
a <- 10
b <- 3

print(a + b)  # 加算
print(a - b)  # 減算
print(a * b)  # 乗算
print(a / b)  # 除算
print(a ^ b)  # べき乗
print(a %% b) # 剰余
print(a %/% b) # 整数除算

# 比較演算
print(a > b)   # より大きい
print(a == b)  # 等しい
print(a != b)  # 等しくない
print(a <= b)  # 以下

# 論理演算
print(TRUE & FALSE)  # AND
print(TRUE | FALSE)  # OR
print(!TRUE)         # NOT

5. 制御構造

Rはプログラムの流れを制御するための標準的な制御構造を提供します。

5.1 if文

age <- 20

if (age >= 18) {
  print("成人")
} else if (age >= 13) {
  print("ティーン")
} else {
  print("子供")
}

5.2 forループ

# ベクトルに対する反復
fruits <- c("apple", "banana", "cherry")
for (fruit in fruits) {
  print(fruit)
}

# シーケンスの使用
for (i in 1:5) {
  print(paste("番号:", i))
}

5.3 whileループ

count <- 1
while (count <= 5) {
  print(count)
  count <- count + 1
}

6. 関数

Rの関数は特定のタスクのための再利用可能なコードブロックです。

# 基本的な関数定義
calculate_area <- function(length, width) {
  area <- length * width
  return(area)
}

# 関数の呼び出し
result <- calculate_area(5, 3)
print(result)

# デフォルトパラメータを持つ関数
greet <- function(name = "Guest") {
  return(paste("Hello,", name))
}

print(greet("Alice"))
print(greet())  # デフォルトパラメータを使用

7. データ操作

Rはデータ操作に優れています。いくつかの基本的な操作を見てみましょう。

# サンプルデータフレーム
students <- data.frame(
  name = c("Alice", "Bob", "Charlie", "Diana"),
  math_score = c(85, 92, 78, 95),
  science_score = c(88, 90, 82, 96),
  grade = c("A", "A", "B", "A")
)

# データのサブセット化
print(students[students$math_score > 85, ])  # math_score > 85の行
print(students[, c("name", "math_score")])   # 特定の列

# 新しい列の追加
students$total_score <- students$math_score + students$science_score
students$average_score <- students$total_score / 2

print(students)

8. データ可視化

Rは強力な可視化機能を持っており、特にggplot2で顕著です。

# 基本的なプロット(base R)
# サンプルデータの作成
x <- 1:10
y <- x^2

# 散布図
plot(x, y, main = "散布図", xlab = "X", ylab = "Y", col = "blue", pch = 16)

# 折れ線グラフ
plot(x, y, type = "l", main = "折れ線グラフ", xlab = "X", ylab = "Y", col = "red")

# ヒストグラム
hist(rnorm(100), main = "ヒストグラム", xlab = "値", col = "lightblue")

8.1 ggplot2の使用(インストールされている場合)

# まだインストールされていない場合はggplot2をインストールして読み込む
# install.packages("ggplot2")
library(ggplot2)

# サンプルデータフレームの作成
plot_data <- data.frame(
  category = c("A", "B", "C", "D"),
  value = c(25, 40, 30, 35)
)

# 棒グラフの作成
ggplot(plot_data, aes(x = category, y = value)) +
  geom_bar(stat = "identity", fill = "steelblue") +
  labs(title = "棒グラフの例", x = "カテゴリ", y = "値") +
  theme_minimal()

9. 統計分析

Rは統計計算のために設計されています。いくつかの基本的な統計関数を見てみましょう。

# サンプルデータ
data <- c(23, 45, 67, 34, 56, 78, 89, 12, 45, 67)

# 基本統計量
print(mean(data))     # 平均
print(median(data))   # 中央値
print(sd(data))       # 標準偏差
print(var(data))      # 分散
print(min(data))      # 最小値
print(max(data))      # 最大値
print(summary(data))  # 五数要約

# 相関
x <- 1:10
y <- x + rnorm(10)  # ノイズを追加
print(cor(x, y))    # 相関係数

# 線形回帰
model <- lm(y ~ x)
print(summary(model))

10. ファイル操作

Rはファイルの読み書きのための関数を提供します。

# ファイルへの書き込み
write.csv(students, "students.csv", row.names = FALSE)

# ファイルからの読み込み
# read_data <- read.csv("students.csv")
# print(read_data)

# テキストファイルの操作
# writeLines(c("行1", "行2", "行3"), "example.txt")
# text_content <- readLines("example.txt")
# print(text_content)

11. パッケージとライブラリ

Rの強力さはその広範なパッケージエコシステムにあります。

# パッケージのインストール
# install.packages("dplyr")  # データ操作用
# install.packages("ggplot2") # 可視化用

# パッケージの読み込み
library(dplyr)
library(ggplot2)

# dplyrを使ったデータ操作
# students %>%
#   filter(math_score > 85) %>%
#   select(name, math_score) %>%
#   arrange(desc(math_score))

12. エラー処理

Rはエラー処理のためのメカニズムを提供します。

# 基本的なエラー処理
tryCatch({
  result <- 10 / 0
  print(result)
}, error = function(e) {
  print(paste("エラーが発生しました:", e$message))
}, finally = {
  print("これは常に実行されます")
})

# try()の使用
result <- try(10 / 0, silent = TRUE)
if (inherits(result, "try-error")) {
  print("除算に失敗しました")
}

13. 高度なトピック

13.1 applyファミリー関数

applyファミリー関数はベクトル化された操作に強力です。

# 行列の作成
mat <- matrix(1:12, nrow = 3, ncol = 4)
print(mat)

# apply関数
print(apply(mat, 1, mean))  # 行平均
print(apply(mat, 2, sum))   # 列合計

# リスト用のlapply
my_list <- list(a = 1:5, b = 6:10, c = 11:15)
print(lapply(my_list, mean))  # 各リスト要素の平均

# sapply(簡略化版)
print(sapply(my_list, mean))

13.2 文字列操作

text <- "Hello R Programming"

print(toupper(text))    # 大文字に変換
print(tolower(text))    # 小文字に変換
print(nchar(text))      # 文字数をカウント
print(substr(text, 1, 5))  # 部分文字列の抽出

# stringrパッケージの使用(インストールされている場合)
# library(stringr)
# str_split(text, " ")  # 文字列の分割

13.3 日付と時刻

# 現在の日付と時刻
current_time <- Sys.time()
print(current_time)

# 日付のフォーマット
formatted_date <- format(current_time, "%Y-%m-%d")
print(formatted_date)

# 日付演算
today <- Sys.Date()
future_date <- today + 30
print(future_date)

14. ベストプラクティス

より良いRコードを書くためのヒント:

  • 意味のある変数名を使用する
  • 適切にコードにコメントを追加する
  • 可能な場合はループの代わりにベクトル化された操作を使用する
  • スクリプトの先頭でパッケージを読み込む
  • 一貫したインデントを使用する(2スペースが推奨)
  • サンプルデータでコードをテストする
  • プロジェクトにバージョン管理を使用する

15. 次のステップ

Rの学習を続けるには:

  1. 実践: 小さなデータ分析プロジェクトに取り組む
  2. パッケージの探索: dplyr、ggplot2、tidyrなどの必須パッケージを学ぶ
  3. オンラインリソース: Rドキュメント、Stack Overflow、R-bloggersを活用する
  4. 書籍: Hadley Wickham著「R for Data Science」
  5. コース: Rを使ったデータ分析のオンラインコースを受講する

Rは統計計算とデータ分析のための強力なツールです。実践を重ねることで、複雑なデータ操作、美しい可視化、高度な統計分析を実行できるようになります。