R-Projekte und Workspace-Verwaltung
Erstellen Sie RStudio-Projekte und verwalten Sie .RData, .Rhistory und .Renviron.
R-Projekte und Workspace-Verwaltung ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Der R-Arbeitsbereich: .RData und .Rhistory
Standardmäßig fragt R beim Beenden, ob der Arbeitsbereich – also alle Objekte im Speicher – in der versteckten Datei .RData im Arbeitsverzeichnis gespeichert werden soll. Ihre Befehlshistorie wird in .Rhistory gespeichert. Diese Dateien werden in der nächsten Sitzung automatisch geladen.
Dieser Komfort kann jedoch die Reproduzierbarkeit beeinträchtigen.
# .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-restoreWarum sollte .RData nicht automatisch gespeichert werden?
Wenn Sie sich auf .RData verlassen, lassen sich Ihre Ergebnisse nicht von Grund auf reproduzieren. Objekte sammeln sich unbemerkt über mehrere Sitzungen hinweg an, alte Variablen überschreiben neue und Mitarbeitende können Ihre Umgebung nicht identisch nachbilden. Die Lösung: Speichern Sie den Arbeitsbereich niemals – erstellen Sie ihn stattdessen jedes Mal durch das Ausführen Ihrer Skripte neu.
# 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() – Arbeitsbereich leeren
rm(list = ls()) ist die übliche Methode, um alle Objekte aus der globalen Umgebung zu entfernen und so eine frische Sitzung zu simulieren, ohne R neu zu starten. Der Aufruf steht häufig am Anfang eines Skripts, um bei jedem Durchlauf einen sauberen Ausgangszustand sicherzustellen.
# 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() – Globale Sitzungseinstellungen
options() steuert viele sitzungsweite Verhaltensweisen von R. Zwei der am häufigsten gesetzten Optionen sind scipen (Strafwert für die wissenschaftliche Schreibweise) und digits (Anzahl der ausgegebenen signifikanten Stellen). Legen Sie diese am Anfang Ihrer Skripte fest, um eine konsistente Ausgabe zu erhalten.
# 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 – Umgebungsvariablen
Die Datei .Renviron speichert Umgebungsvariablen, die R beim Start lädt. Sie ist der richtige Ort für Geheimnisse und Konfigurationswerte wie API-Schlüssel, Datenbankpasswörter und Dateisystempfade, damit diese nicht in Ihrem Quellcode stehen.
# .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 RsaveRDS() – Ein einzelnes Objekt speichern
saveRDS() serialisiert ein einzelnes R-Objekt in eine .rds-Datei. Dies ist die bevorzugte Methode, um Ergebnisse aufwendiger Berechnungen zwischenzuspeichern, da die Datei genau ein Objekt enthält und Sie vollständig kontrollieren, was gespeichert und geladen wird.
# 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() – Ein einzelnes Objekt wiederherstellen
readRDS() deserialisiert eine .rds-Datei zurück in ein R-Objekt. Anders als bei load() muss der Rückgabewert einem Namen zugewiesen werden – dadurch können Sie dieselbe Datei in verschiedenen Teilen Ihres Codes unter unterschiedlichen Namen laden.
# 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() und load() – Mehrere Objekte
save() serialisiert ein oder mehrere benannte Objekte in eine .RData-Datei. load() stellt sie wieder her – die ursprünglichen Namen werden jedoch automatisch übernommen, wodurch vorhandene Objekte unbemerkt überschrieben werden können. Verwenden Sie diese Funktionen mit Vorsicht.
# 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 im Vergleich zu save – Wann verwendet man was?
Verwenden Sie saveRDS() für einzelne Objekte, wenn Sie beim Laden die vollständige Kontrolle über die Namensgebung haben möchten – ideal für Modellergebnisse, verarbeitete Datensätze und zwischengespeicherte Ergebnisse. Verwenden Sie save() nur, wenn Sie mehrere benannte Objekte für einen bestimmten Arbeitsablauf mit Mitarbeitenden zusammenfassen müssen.
# 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() prüfen und wiederherstellen
Während einer Sitzung gesetzte Optionen bleiben nur für diese Sitzung bestehen. Damit Ihr Skript in sich geschlossen ist, legen Sie die benötigten Optionen am Anfang fest und stellen Sie die alten Werte nach Abschluss des Skripts optional mit on.exit() wieder her.
# 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-Projekte zur Verwaltung des Arbeitsbereichs
Ein RStudio Project (Datei .Rproj) legt das Arbeitsverzeichnis automatisch auf das Projektstammverzeichnis fest, führt pro Projekt eine separate .Rhistory und isoliert Sitzungseinstellungen. Es ist die Standardmethode zur Verwaltung eigenständiger R-Projekte.
# 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')Schnelltest
Sie möchten einen einzelnen R-Dataframe namens clean_data auf der Festplatte speichern, um ihn in einem anderen Skript unter einem beliebigen von Ihnen gewählten Variablennamen erneut zu laden. Welche Funktion sollten Sie verwenden?
Verwaltung des Arbeitsbereichs – wichtigste Erkenntnisse
Ein gut verwalteter R-Arbeitsbereich ist die Grundlage reproduzierbarer Analysen:
.RData/.Rhistory– automatisch gespeicherte Arbeitsbereichsdateien (deaktivieren Sie das automatische Speichern!)rm(list = ls())– alle Objekte entfernen und einen sauberen Ausgangszustand herstellenoptions(scipen = 999, digits = 4)– Zahlenformatierung steuern.Renviron– API-Schlüssel und Pfade als Umgebungsvariablen speichernsaveRDS(obj, 'file.rds')– ein einzelnes Objekt zwischenspeichernreadRDS('file.rds')– unter einem eigenen Namen wiederherstellensave(a, b, file = 'session.RData')– mehrere Objekte zusammenfassenload('session.RData')– alle zusammengefassten Objekte wiederherstellen- Verwenden Sie RStudio Projects zur automatischen Verwaltung des Arbeitsverzeichnisses
# 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')Häufig gestellte Fragen
Ist die Lektion „R-Projekte und Workspace-Verwaltung“ kostenlos?
Ja — der vollständige Text von „R-Projekte und Workspace-Verwaltung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „R-Projekte und Workspace-Verwaltung“?
Erstellen Sie RStudio-Projekte und verwalten Sie .RData, .Rhistory und .Renviron. Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „R-Projekte und Workspace-Verwaltung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Skripte mit source() laden
- Kommentare, Stil und Lesbarkeit
- Arbeitsverzeichnisse und Dateipfade
- R-Projekte und Workspace-Verwaltung