0Pricing
R Academy · レッスン

Rプロジェクトとワークスペース管理

RStudioプロジェクトを作成し、.RData、.Rhistory、.Renvironを管理します。

「Rプロジェクトとワークスペース管理」はCoddyKit上の無料R Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはR Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 R Academyコースには全4レッスンが含まれています。

R のワークスペース: .RData と .Rhistory

デフォルトでは、R を終了すると、メモリ上のすべてのオブジェクトであるワークスペースを、作業ディレクトリ内の .RData という隠しファイルに保存するかどうかを尋ねられます。コマンド履歴は .Rhistory に保存されます。これらのファイルは、次回のセッション開始時に自動的に読み込まれます。

この便利な機能は、再現性を損なう原因にもなります。

# .RData: binary snapshot of all objects in the global environment
# .Rhistory: text file of every command you typed

# See what would be saved right now:
cat('Objects that would be saved:', length(ls()), '\n')
cat('Their names:', paste(ls(), collapse = ', '))

# Workspace saving is controlled by:
# Tools -> Global Options -> General -> Save workspace (NEVER recommended)
# Or at startup: R --no-save --no-restore

.RData の自動保存を避ける理由

.RData に依存すると、結果をゼロから再現できなくなります。セッションをまたいでオブジェクトが見えないまま蓄積され、古い変数が新しい変数を隠し、共同作業者が同じ環境を再現できなくなるためです。解決策は、ワークスペースを決して保存せず、スクリプトを実行して毎回作り直すことです。

# The recommended R startup setting (in RStudio):
# Tools -> Global Options -> General
#   Restore .RData at startup: UNCHECKED
#   Save workspace on exit: NEVER

# This forces you to write scripts that are fully self-contained.
# A fresh session that runs cleanly = reproducible analysis.

# Equivalent command-line flags:
# R --no-save --no-restore

cat('Always start fresh!')

rm() — ワークスペースのクリア

rm(list = ls()) は、グローバル環境からすべてのオブジェクトを削除する標準的な方法です。R を再起動せずに、新しいセッションの状態を再現できます。毎回クリーンな状態で実行できるよう、スクリプトの先頭に置くことがよくあります。

# Create some objects
a <- 1
b <- 'hello'
df <- data.frame(x = 1:3)

cat('Before rm:', length(ls()), 'objects\n')

# Remove specific objects
rm(a, b)
cat('After rm(a,b):', length(ls()), 'objects\n')

# Remove ALL objects in global environment
rm(list = ls())
cat('After rm(list=ls()):', length(ls()), 'objects')

options() — セッション全体の設定

options() は、R セッション全体に適用されるさまざまな動作を制御します。よく設定されるオプションには、scipen(指数表記へのペナルティ)と digits(表示する有効桁数)があります。出力を一貫させるため、スクリプトの先頭で設定します。

# Default behavior:
cat(0.000123456, '\n')    # may show 1.23456e-04

# Suppress scientific notation (positive scipen = prefer fixed)
options(scipen = 999)
cat(0.000123456, '\n')    # now shows 0.000123456

# Control printed digits
options(digits = 4)
cat(pi, '\n')              # 3.142

# Check current options:
cat('scipen:', getOption('scipen'), '\n')
cat('digits:', getOption('digits'))

.Renviron — 環境変数

.Renviron ファイルには、R が起動時に読み込む環境変数を保存します。API キー、データベースのパスワード、ファイルシステムのパスなどの秘密情報や設定値をソースコードから分離して管理するのに適しています。

# .Renviron file (in ~ or project root):
# DATABASE_URL=postgres://user:pass@host/db
# OPENAI_API_KEY=sk-abc123
# DATA_ROOT=/data/shared

# Read in R:
db_url <- Sys.getenv('DATABASE_URL')
api_key <- Sys.getenv('OPENAI_API_KEY', unset = 'KEY_NOT_SET')

cat('DB URL set:', nchar(db_url) > 0, '\n')
cat('API key:', api_key)

# To edit .Renviron:
# usethis::edit_r_environ()   <- if usethis is installed
# file.edit('~/.Renviron')    <- base R

saveRDS() — 単一オブジェクトの保存

saveRDS() は、単一の R オブジェクトを .rds ファイルにシリアライズします。ファイルには正確に 1 つのオブジェクトだけが保存され、何を保存・読み込みするかを完全に制御できるため、計算コストの高い結果のキャッシュに適しています。

# Create an object to save
result_list <- list(
  model   = 'linear_regression',
  r2      = 0.87,
  rmse    = 12.4,
  created = Sys.time()
)

# Save to disk
tmp_rds <- tempfile(fileext = '.rds')
saveRDS(result_list, file = tmp_rds)
cat('Saved to:', tmp_rds, '\n')

# Load it back (even in a fresh session)
loaded <- readRDS(tmp_rds)
cat('R-squared:', loaded$r2)

readRDS() — 単一オブジェクトの復元

readRDS() は、.rds ファイルを R オブジェクトにデシリアライズします。load() とは異なり、戻り値を変数名に代入する必要があります。そのため、コードの異なる場所で同じファイルを別々の名前で読み込めます。

# Suppose model_results.rds was saved earlier
tmp <- tempfile(fileext = '.rds')
saveRDS(list(coef = c(1.2, 3.4), n = 100), tmp)

# Load with a meaningful name:
model_output <- readRDS(tmp)
cat('Coefficients:', model_output$coef, '\n')
cat('Sample size:', model_output$n, '\n')

# Key advantage over load():
# With load(), the name is baked into the file.
# With readRDS(), YOU choose the name on load.
cat('readRDS gives you naming control')

save() と load() — 複数オブジェクト

save() は、1 つ以上の名前付きオブジェクトを .RData ファイルにシリアライズします。load() はそれらを復元しますが、元の名前も自動的に復元されるため、既存のオブジェクトが気付かないうちに上書きされる可能性があります。使用には注意が必要です。

# Save multiple objects at once
scores <- c(85, 92, 78)
labels <- c('Alice', 'Bob', 'Carol')

tmp_rdata <- tempfile(fileext = '.RData')
save(scores, labels, file = tmp_rdata)
cat('Saved to:', tmp_rdata, '\n')

# Remove originals to simulate a new session
rm(scores, labels)
cat('Removed. Objects now:', length(ls()), '\n')

# Load restores original names automatically
load(tmp_rdata)
cat('Restored scores:', scores)

saveRDS と save — 使い分け

読み込み時の名前を完全に制御したい単一オブジェクトには saveRDS() を使います。モデルの出力、加工済みデータセット、キャッシュした結果などに適しています。複数の名前付きオブジェクトを、特定の共同作業者向けのワークフローでまとめる必要がある場合にのみ、save() を使います。

# saveRDS: one object, you name it on load
# saveRDS(my_model, 'outputs/model_v2.rds')
# m <- readRDS('outputs/model_v2.rds')  <- your name choice

# save: multiple objects, names fixed in the file
# save(model, validation_df, file = 'outputs/session.RData')
# load('outputs/session.RData')  <- restores 'model' and 'validation_df'

# Practical rule:
# saveRDS for caching single results
# save for snapshots shared between collaborators

cat('saveRDS is usually the better choice')

options() の確認と復元

セッション中に設定したオプションは、そのセッションの間だけ有効です。スクリプトを自己完結させるには、必要なオプションを先頭で設定し、必要に応じて on.exit() を使い、スクリプト終了時に古い値を復元します。

# Capture current options before changing
old_options <- options(scipen = 999, digits = 3)

# Use on.exit to restore them no matter what
on.exit(options(old_options), add = TRUE)

# Now do your work
cat(pi, '\n')           # 3.14
cat(1234567.89, '\n')   # 1234568 (no sci notation)

# When function or script exits, options are restored automatically
cat('Options will restore on exit')

ワークスペース管理のための RStudio プロジェクト

RStudio プロジェクト(.Rproj ファイル)は、作業ディレクトリをプロジェクトルートに自動設定し、プロジェクトごとに個別の .Rhistory を保持し、セッションオプションを分離します。自己完結型の R プロジェクトを管理する標準的な方法です。

# When you open a .Rproj file, RStudio automatically:
# 1. Sets working directory to the project root
# 2. Loads the project-specific .Rhistory
# 3. Optionally restores project .RData

# Best practice for new projects:
# File -> New Project -> New Directory -> New Project

# Your project structure then looks like:
# my_project/
#   my_project.Rproj
#   .Rprofile        (project-level options)
#   .Renviron        (project-level env vars)
#   R/               (scripts)
#   data/            (raw data)
#   output/          (results)

cat('RStudio Projects = clean workspaces')

クイックチェック

clean_data という名前の単一の R データフレームをディスクに保存し、別のスクリプトで好きな変数名を付けて読み込みたいとします。どの関数を使うべきですか?

ワークスペース管理 — 重要ポイント

適切に管理された R ワークスペースは、再現性のある分析の基盤です。

  • .RData / .Rhistory — 自動保存されるワークスペースファイル(自動保存を無効にしましょう)
  • rm(list = ls()) — すべてのオブジェクトを削除してクリーンな状態にします
  • options(scipen = 999, digits = 4) — 数値の表示形式を制御します
  • .Renviron — API キーやパスを環境変数として保存します
  • saveRDS(obj, 'file.rds') — 単一オブジェクトをキャッシュします
  • readRDS('file.rds') — 自分で指定した名前で復元します
  • save(a, b, file = 'session.RData') — 複数のオブジェクトをまとめます
  • load('session.RData') — まとめて保存したすべてのオブジェクトを復元します
  • 作業ディレクトリを自動管理するには、RStudio Projects を使います
# Typical script header for clean, reproducible analysis:
rm(list = ls())                         # clean workspace
options(scipen = 999, digits = 4)       # formatting

# Load secrets from .Renviron:
db_url <- Sys.getenv('DATABASE_URL')

# Load cached data if available:
cache_file <- file.path('cache', 'processed_data.rds')
if (file.exists(cache_file)) {
  df <- readRDS(cache_file)
  cat('Loaded from cache\n')
} else {
  cat('Cache not found, run data_prep.R first\n')
}

cat('Workspace ready')

よくある質問

「Rプロジェクトとワークスペース管理」レッスンは無料ですか?

はい。「Rプロジェクトとワークスペース管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、R Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 R Academyコースには全4レッスンが含まれています。

「Rプロジェクトとワークスペース管理」で何を学びますか?

RStudioプロジェクトを作成し、.RData、.Rhistory、.Renvironを管理します。 ブラウザで直接実行するハンズオンコードでR Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

R Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのR Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Rプロジェクトとワークスペース管理」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このR Academyレッスンでコードを書いて実行できますか?

はい。すべてのR Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. source()によるスクリプトの読み込み
  2. コメント、スタイル、可読性
  3. 作業ディレクトリとファイルパス
  4. Rプロジェクトとワークスペース管理
← R Academyに戻る