404 Not Found

404 Not Found


nginx

Rの基本構文:コメント、変数、代入、および出力

前回のレッスンでは、RとRStudioをインストールし、最初のコードを1行実行しました cat("Hello")。このレッスンでは、Rの「4つの基本的な構文要素」――コメント、変数、代入、出力――を徹底的に習得します。これが、今後28回のレッスンの基礎となります。

Rの構文は他の言語とは多少異なります。コメントには#が、代入には通常<-が、文字列の連結にはpaste()が、それぞれ+の代わりに使用されます。これら4つの違いを理解することが、Rコードを書く上での成功の半分を占めます。

1. 学習内容



2. コメント:コードへの「コメント」の追加

コメントは人間が読むためのテキストであり、Rインタプリタはそれらを完全に無視します。しかし、コメントは単なる「飾り」ではなく、プログラマーにとって最も重要なコミュニケーションツールなのです。

(1) コメントはなぜ重要なのでしょうか?

6か月後に、自分が書いたコードを振り返る場面を想像してみてください:

R
# Code without comments:
x <- df %>% filter(age > 18) %>% mutate(group = ifelse(score >= 60, "pass", "fail"))

# Code with Comments:
# Filter 18 Adults aged 18 and older,and by score 60 Classified as "Approved"/Failed both groups
x <- df %>% filter(age > 18) %>% mutate(group = ifelse(score >= 60, "pass", "fail"))

後者はすぐに理解できるのに対し、前者を理解するには5分ほどかかります。これこそがコメントの価値なのです。

(2) Rのコメント構文

R 1行コメントのみ#を使用)、/* */によるブロックコメントは不可:

構文 対応 説明
# This is a comment 1行コメント—Rでサポートされている唯一の方法
/* Multi-line */ R はサポートされていません。構文エラーが発生します
// Single line R はサポートされていません。代わりに object '//' not found を返します

(3) 複数行にわたるコメントはどのように扱えばよいですか?

Rにはネイティブな複数行コメント機能はありませんが、2つの回避策があります:

R
# Plan 1: Use this on every line # (Recommendations, Standard Practice)
# Line 1 Comments
# Line 2 Comments
# Line 3 Comments
x <- 10

# Plan 2:RStudio Keyboard Shortcuts(Most Commonly Used)
# Select multiple lines of code → Ctrl+Shift+C (macOS: Cmd+Shift+C)
# RStudio Automatically add to each line #,Click again to remove the comment
💡 ヒント:「コードのすべての行にコメントを付ける」という良い習慣を身につけましょう。研究によると、半年後に自分のコードを見返したとき、コメントのないコードは理解するのが事実上不可能であることがわかっています。



3. 変数と命名規則

変数は、データを格納するために使われる「容器」です。Rは動的型付け言語であるため、事前に型を宣言する必要はなく、変数に値を代入するだけで済みます。

(1) 命名規則(必ず遵守してください。遵守しない場合、エラーが発生します)

ルール 誤った例 正しい例 理由
文字、数字、アンダースコア、ピリオドのみを含めること 2age <- 25 age2 <- 25 数字で始まってはならない
スペースを含めることはできません my name my_name Rでは、スペースは構文上の区切り文字です
Rキーワードは使用できません if <- 1 is_if <- 1 if は制御フローキーワードです
大文字と小文字の区別 Namename は異なる変数です name(大文字小文字が統一されている) Rは大文字と小文字を区別します
⚠️ 注意:Rは大文字と小文字を区別します。これは最もよくある落とし穴の一つです。NamenameNAMEは、それぞれまったく異なる変数です。

(2) 命名規則(推奨)

Rコミュニティには2つの主流な命名規則があります。どちらか一方を選んで、一貫して使い続けてください

スタイル 使用例
snake_case(アンダースコア) user_name, total_count tidyverse スタイル(推奨)
dot.case user.name, total.count 旧式ベースR

このチュートリアルでは、一貫してスネークケースを採用しています(dplyr や ggplot2 といった最新の R パッケージのスタイルに準拠しています)。

(3) 変数の表示

R
# Assignment
x <- 10
y <- 20

# View a Single Variable
x
# [1] 10

# View All Variables(Equivalent to Environment Pane)
ls()
# [1] "x" "y"
💡 ヒント:RStudioの「環境/履歴」ペイン(右上)で、変数をクリックするとその値を確認できます。これはls()よりもずっと直感的です。



4. 代入演算子:<-=

Rには2つのトップレベルの代入演算子があります。これらは機能的にはほぼ同等ですが、<-の使用が推奨されます

(1) 2つの文章スタイルの比較

寸法 <- =
トップレベルの割り当て
関数内でローカル変数を宣言する ❌ (それらは外側のスコープに渡される)
関数呼び出しでの引数の渡し方 ❌(同じ名前の変数が作成される)
コミュニティの慣例 ✅ Rによる公式推奨 ❌ 混乱を招きやすい
読みやすさ ✅ 「右辺を左辺に割り当てる」という意味が明確に示されている ⚠️ 数学の「等号」と混同される恐れがある
R
# Writing Style 1:<-  (Recommendations)
x <- 10

# Writing Style 2:=   (Available but not recommended)
x = 10

(2) 逆割り当て -> およびグローバル割り当て <<-

Rには、さらに2つの「高度な」代入演算子があります:

記号 目的 推奨レベル
x <- 10 標準配置(右から左) ✅ 強く推奨
10 -> x 逆割り当て(左から右) ⚠️ レガシーコードを読む際の識別目的のみに使用
x <<- 10 グローバル代入(関数スコープを貫通) ❌ ほとんど使用されない
⚠️ 注意:実際の開発では、<<-->ほとんど使用されません。初心者の方は、<- だけを使用すれば十分です

(3) スペースの重要性:<-< -

R
# Correct: Assignment
x <- 10

# Error: This is "less-than sign" Plus "negative 10" (Comparison x and -10)
x < -10
⚠️ 注意<- は必ずスペースで囲む必要があります。そうしないと、比較演算子として解釈されてしまいます。たった1つのスペースが欠けていても、結果が大きく変わってしまうことがあります。



5. 出力関数:print() 対 cat()

Rには、それぞれ異なる目的を果たす2つのよく使われる出力関数があります。

(1) 一目で違いがわかる表

特徴 print() cat()
文字列の引用符 "Alice" を表示 Alice を表示しない
ベクトルインデックス [1] 1 2 3 を表示 1 2 3 を非表示
複数パラメータの連結 paste() が必要 ✅ 直接連結
改行 自動改行 手動改行が必要 \n
自動呼び出し ✅ コンソールにオブジェクトを直接入力した場合 ❌ 明示的に呼び出す必要がある
ユースケース デバッグ、モニタリング レポート・テキストの生成

(2) 実演

R
name <- "Alice"
age <- 25

# print() -- General Output (with [1] and quotation marks)
print(name)
# [1] "Alice"

# cat() —— Concatenated Output(Recommendations,More flexible)
cat("Name:", name, ",Age:", age, "\n")
# Name: Alice ,Age: 25

(3) その他の出力関数

機能 目的 利用例
message() 通常のメッセージ(suppressMessages() で非表示にできます) 長いスクリプトの実行中の進行状況表示
warning() 警告(プログラムの実行は中断されません) リスクがあることを示しますが、実行は続行されます
stop() エラー(プログラム中断) 致命的なエラー。tryCatch() によって処理される必要があります
💡 ヒント:このチュートリアルでは、テキストメッセージの出力には cat() を、デバッグや変数の値の確認には print() を使用してください。



6. 作業ディレクトリ

Rが起動すると、デフォルトで作業ディレクトリに移動し、すべてのファイルの読み書きはそこで行われます。

(1) 作業ディレクトリの重要性

100%
graph LR
    A["R Process"] --> B["Working Directory<br/>(work dir)"]
    B --> C["data/sales.csv<br/>(Relative Path = ./data/sales.csv)"]
    B --> D["scripts/clean.R<br/>(Relative Path)"]
    B --> E["output/report.html<br/>(Relative Path)"]
    
    style A fill:#fff3cd
    style B fill:#d4edda

作業ディレクトリが間違っている場合、read_csv("data/sales.csv")はそのファイルを見つけられません

(2) 作業ディレクトリの表示と設定

R
# View the current working directory
getwd()
# [1] "C:/Users/Alice/Documents"

# Set the working directory (Use / or \\, Do not use \)
setwd("C:/Users/Alice/Projects/my_r_project")

(3) 推奨されるアプローチ:RStudioプロジェクト

これを手動で行う setwd() と、エラーが発生しやすくなります(パスに漢字やスペースが含まれていると問題が生じる可能性があります)。RStudioプロジェクトの使用をお勧めします

利点 説明
自動設定 .Rproj ファイルを開くと、作業ディレクトリは自動的にプロジェクトのルートディレクトリに設定されます
プロジェクトの独立性 各プロジェクトには独自の .R 履歴、環境、パッケージがあり、プロジェクト間で干渉することはありません
ポータブル パス競合を起こすことなく、プロジェクトフォルダ全体を他の人に送信
Git対応 RStudioプロジェクトをGitと統合するためのベストプラクティス
100%
graph LR
    A["File → New Project"] --> B["Select New Directory → New Project"]
    B --> C["Enter the project name r-tutorial"]
    C --> D["RStudio Create .Rproj Documents"]
    D --> E["Open later .Rproj<br/>Automatic Working Directory Setup"]
💡 ヒント:このチュートリアルのすべての例について、新しい RStudio プロジェクト(r-tutorial など)を作成し、すべての .R スクリプトをその中に配置することを強くお勧めします



7. コマンドラインでの実行:Rscript

Rスクリプト(自動化、スケジュールされたタスク、またはWebバックエンド用など)をRStudioを開かずに実行したい場合は、Rscriptをご利用ください。

(1) スクリプトを作成する

任意の場所に「hello.R」という名前の新しいファイルを作成してください:

R
# hello.R
cat("Hello, World!\n")

(2) コマンドラインからの実行

ターミナル(cmd / Windowsの場合はPowerShell、macOSおよびLinuxの場合はTerminal)を開き、次のコマンドを実行してください:

R
Rscript hello.R

期待される出力:

R
Hello, World!
💡 ヒントRscript は、CI/CD、データパイプライン、Web API(R Plumber)などの場面で広く利用されており、すべてのRエンジニアが習得すべきコマンドです。



8. 完全な例:基本構文の総合的な練習

以下は、このレッスンで取り上げたすべての概念を結びつけた完全なワークフローの例です。

▶ サンプル:学生情報管理スクリプト

R
# ============================================
# Student Information Management Script
# File Name:student.R
# ============================================

# 1. Notes:Script Description
# Author:Alice
# Features:Define student information and output it
# Date:2026-07-02

# 2. Variable Assignment (Use <- No need =)
student_name <- "Alice"
student_age <- 20
student_score <- 95.5
is_passed <- TRUE

# 3. Use cat() Output (Recommendations, Flexible Assembly)
cat("=== Student Information ===\n")
cat("Name:", student_name, "\n")
cat("Age:", student_age, "\n")
cat("Score:", student_score, "\n")
cat("Did I pass?:", is_passed, "\n")

# 4. Use print() Debugging (with [1] Index)
print(student_name)
print(student_score)

# 5. Simple Calculations
final_score <- student_score * 0.6 + 100 * 0.4  # 60% End of Term + 40% Usually
cat("\nFinal Results(60% End of Term + 40% Usually):", round(final_score, 2), "\n")

# 6. Delete Variable(Use with caution)
rm(student_name, student_age, student_score, is_passed, final_score)
▶ 試してみよう

期待される出力:

TEXT
=== Student Information ===
Name: Alice
Age: 20
Grades: 95.5
Did I pass?: TRUE
[1] "Alice"
[1] 95.5

Final Results(60% End of Term + 40% Usually): 97.3

(1) 手順

ステップ 操作 説明
1 RStudioプロジェクトの作成 r-basics File → New Project
2 プロジェクト内に student.R を作成 Ctrl+Shift+N
3 上記のコードをコピー コード全体を貼り付け
4 すべて選択 → Ctrl+Enter コンソールに送信
5 コンソールで出力を確認する 「学生情報」が5行表示される

❓ よくある質問

Q x <- 10x < -10 の違いは何ですか?
A スペースに注意してください!x <- 10は代入(xに10を代入する)ですが、x < -10は比較(xが-10より小さいかどうかを確認する)です。たった1つのスペースの有無で、結果が大きく異なります。<-の前後にスペースを入れる習慣をつけましょう。

📖 まとめ


📝 練習問題

  1. 基本演習:RStudioで新しいスクリプトを作成し、テキスト(name)、年齢(age)、体重(weight、浮動小数点数)、学生かどうか(is_student、ブール値)、居住地(city)を格納するための5つの変数を定義してください。cat() を使用して、これらを連結し、次のような出力を生成してください:「私は [name] です。[age] 歳で、体重は [weight] kg です。[city] に住んでおり、[is_student] まだ学生です。」スクリプトを実行した後、スクリーンショットを撮り、保存してください。

  2. 基本演習r-basics という名前の新しい RStudio プロジェクトを作成してください。そのプロジェクト内に variables.R という名前のスクリプトを作成し、異なる型(数値型、文字列型、論理型、複素数型、および null NA)の変数を 5 つ定義してください。typeof() を使用して各変数の型を確認し、5つの typeof() コマンドそれぞれの出力のスクリーンショットを撮影して保存してください。

  3. 応用問題:以下の機能を持つスクリプトを作成してください:① paste() を使用して、"Hello""World" を連結し、「Hello-World」(sep = "-") を作成する; ② cat() を使用して結果を出力する; ③ nchar() を使用して、連結された文字列の長さを確認する。スクリプトを実行した後、スクリーンショットを撮り、コンソールの出力を保存してください。

  4. 課題:以下の処理を行うRスクリプトを作成してください。① setwd() を使用して、作業ディレクトリを tempdir()(Rの一時ディレクトリ)に変更する。② getwd() を使用して、現在の作業ディレクトリを出力する。③ save.image() を使用して、ワークスペースを my_workspace.RData に保存する。④ rm(list = ls()) を使用してすべての変数をクリアする;⑤ load("my_workspace.RData") を使用して再読み込みを行う。再読み込み後もすべての変数が残っていることを確認する。スクリプトの実行後、スクリーンショットを撮り、5つのステップすべての完全な出力を保存する。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%