Was ist ein Data Frame in R?
- Tabellarische Datenstruktur mit Spalten unterschiedlichen Typs./Zeilen = Beobachtungen, Spalten = Variablen/ähnlich wie Tabelle in Excel oder SQL.
Was sind Spaltennamen und Zeilennamen in Data Frames?
- Spaltennamen kennzeichnen Variablen, Zeilennamen Identifikatoren./können über names(), rownames() gesetzt oder ausgelesen werden.
Was ist der Unterschied zwischen Matrix und Data Frame?
- Matrix: alle Elemente gleichen Typs (z. B. numeric)./Data Frame: Spalten dürfen unterschiedliche Typen (z. B. numeric + character) enthalten.
Was ist der Vorteil von Data Frames?
- Ermöglichen tabellarische Speicherung heterogener Daten für Analysen und Modellierung.
Was ist der Unterschied zwischen Liste und Data Frame?
- Liste: beliebige Strukturen, keine Längenbindung./Data Frame: Listenstruktur mit gleichlangen Spalten.
Was ist Aggregation?
- Gruppieren von Daten und Anwenden einer Funktion (z. B. Mittelwert, Summe) auf Gruppen.
Was ist ein Gruppierungsfaktor?
- Variable, die Daten in Untergruppen einteilt (z. B. cyl = Zylinderzahl bei mtcars).
Was ist der Unterschied zwischen apply, lapply, sapply und tapply?
- apply → Zeilen/Spalten einer Matrix,/lapply → auf Liste (Ausgabe: Liste),/sapply → vereinfachte Ausgabe (Vektor/Matrix),/tapply → gruppenbasierte Anwendung auf Vektoren.
Was bedeutet „tidy data“?
- Jede Variable = Spalte, jede Beobachtung = Zeile, jeder Wert = Zelleninhalt./Erleichtert Analyse und Visualisierung.
Was ist der Unterschied zwischen long und wide Format?
- wide: mehrere Messungen pro Zeile (mehr Spalten)/long: jede Messung eigene Zeile mit Zeit-/Kategoriefeld.
Was ist eine Formel in R (z. B. y ~ x + z)?
- beschreibt Abhängigkeiten zwischen Variablen, genutzt für Modelle (lm(), glm(), aov()).
Was ist der Unterschied zwischen linearem und generalisiertem Modell?
- linear: kontinuierliche Zielvariable (lm)/generalisiert: auch binär, Poisson usw. (glm).
Was ist die Idee von Modellformeln in R?
- Formel-Objekte (class = "formula") speichern Struktur des Modells, unabhängig von Daten.
Was bedeutet „Residual“ in der Statistik?
- Differenz zwischen beobachtetem und vorhergesagtem Wert eines Modells.
Was misst der R²-Wert?
- Anteil der Varianz, der durch das Modell erklärt wird (Güte der Anpassung).
Was ist der Unterschied zwischen Korrelation und Kausalität?
- Korrelation beschreibt statistische Beziehung, nicht Ursache-Wirkung.
Was ist ein Environment in R?
- Sammlung von Name-Objekt-Zuordnungen (Variablenbindung)/jede Funktion hat eigenes Environment.
Was ist das globale Environment?
- Arbeitsbereich der aktuellen R-Session (alle selbst erstellten Objekte).
Was ist das Parent-Environment?
- Übergeordnetes Environment, in dem nach nicht gefundenen Objekten gesucht wird.
Was ist das Suchpfad-Konzept (search path)?
- Reihenfolge, in der R nach Objekten sucht (z. B. .GlobalEnv, packages, base).
Was passiert bei attach()?
- Data Frame wird in Suchpfad eingefügt → Spaltennamen direkt verwendbar.
Warum ist attach() potenziell problematisch?
- Kann Namenskonflikte erzeugen (Variablen überschreiben sich).
Was ist ein Namespace?
- Trennt Funktionsnamen verschiedener Pakete, um Konflikte zu vermeiden.
Was ist Objektorientierung (OOP) in R?
- Strukturierung von Code in Objekte mit Klassen und Methoden (S3, S4, R6).
Was ist der Unterschied zwischen S3- und S4-Klassen?
- S3: einfach, dynamisch/ S4: formaler mit definierten Slots und Typprüfung.
Was ist ein Slot in einer S4-Klasse?
- Attribut (Feld), das in einer S4-Klasse definiert ist.
Was ist eine Methode in R?
- Funktion, deren Verhalten vom Klassentyp des Objekts abhängt (z. B. summary.data.frame vs. summary.lm).
Was ist Polymorphismus in R?
- Gleiche Funktionsnamen, aber unterschiedliche Implementierungen je nach Objektklasse.
Was ist die Funktion show() bei S4-Klassen?
- Standardausgabe einer S4-Instanz → kann mit setMethod("show", ...) angepasst werden.
Was ist Vererbung bei Klassen?
- Eigenschaften und Methoden einer Basisklasse werden an abgeleitete Klassen weitergegeben.
Was ist ein generischer Funktionsaufruf?
- Eine Funktion, die das Verhalten anhand der Klasse des Eingabeobjekts bestimmt (z. B. print(), plot()).
Was ist der Unterschied zwischen Environment und Namespace?
- Environment = Laufzeit-Variable-/Funktionsspeicher./Namespace = Paket-interner Bereich mit exportierten Symbolen.
Was ist das Ziel von Profiling in R?
- Identifizieren von Zeit- und Speicherfressern im Code zur Optimierung.
Was ist ein Grafikgerät in R?
- Schnittstelle, über die R-Grafiken ausgibt (z. B. Bildschirm, PDF, PNG).
Was bedeutet „device off“ (dev.off())?
- Schließt das aktuelle Grafikgerät → Plotdatei wird geschrieben und gespeichert.
Was ist der Unterschied zwischen base graphics und ggplot2?
- base graphics: imperativ (direkte Plotbefehle)/ggplot2: deklarativ (Schichtsystem nach Grammar of Graphics).
Was ist ein Plot-Layout?
- Aufteilung des Grafikbereichs in mehrere Unterplots (z. B. par(mfrow=c(2,2))).
Was ist eine Legende im Plot?
- Beschriftung zur Erklärung von Symbolfarben oder Linienarten.
Was ist der Unterschied zwischen linearem Modell und ANOVA?
- beides lineare Modelle → ANOVA vergleicht Mittelwerte zwischen Gruppen (Varianzzerlegung).
Was ist der Zweck von Packages in R?
- Erweiterung des Basisumfangs mit spezialisierten Funktionen (z. B. ggplot2, dplyr).
Was ist der Unterschied zwischen base, recommended und contributed Packages?
- base = fest eingebaut,/recommended = mitgeliefert,/contributed = von Community (über CRAN).
Was ist CRAN?
- „Comprehensive R Archive Network“ – Hauptquelle für R-Pakete.
Was ist Bioconductor?
- Plattform für bioinformatische R-Pakete (Genomik, Sequenzanalyse etc.).
Was ist ein Repository in R?
- Quelle, aus der Pakete installiert werden (z. B. CRAN, GitHub).
Was ist der Unterschied zwischen require() und library()?
- require() gibt TRUE/FALSE zurück (programmatisch nützlich), library() stoppt bei Fehler.
Was bedeutet „Namespace Loading“?
- Nur exportierte Objekte eines Pakets werden geladen, interne bleiben geschützt.
Was ist Versionierung bei Packages?
- Jede Installation hat eine definierte Version – wichtig für Reproduzierbarkeit.
Was ist der Unterschied zwischen install.packages() und update.packages()?
- install → neues Paket laden,/update → bestehendes aktualisieren.
Was ist ein Environment-Leak?
- Wenn ungenutzte Objekte/Environments im Speicher verbleiben → unnötige RAM-Belastung.
Wann verwendet man apply() statt einer for-Schleife?
- Wenn dieselbe Operation auf jede Zeile oder Spalte einer Matrix angewendet werden soll./apply() ist vektorbasiert, kürzer und meist schneller als eine for-Schleife.
Wann ist lapply() sinnvoll?
- Wenn man eine Funktion auf jedes Element einer Liste anwenden möchte und das Ergebnis Listenstruktur behalten soll./z. B. bei Dataframes mit Spalten unterschiedlicher Typen.
Wann verwendet man sapply() anstelle von lapply()?
- Wenn das Ergebnis eine einfache Struktur haben darf (Vektor oder Matrix)./Beispiel: sapply(list(1:3,4:6),sum) → c(6,15).
Wann benutzt man tapply()?
- Wenn man eine Funktion auf Gruppen eines Vektors anwenden will (Gruppierung über Faktorvariable)./z. B. Mittelwert pro Kategorie.
Wann nutzt man aggregate() statt tapply()?
- aggregate() arbeitet auf Dataframes (mehrere Variablen möglich)/tapply() auf einzelnen Vektoren.
Wann nutzt man transform() statt mutate()?
- transform() ist Base R-Variante zum Erstellen/Verändern von Spalten,/mutate() stammt aus dplyr und ist moderner, effizienter und besser lesbar.
Wann sollte man attach() vermeiden?
- Wenn es zu Namenskonflikten führen könnte, z. B. gleiche Variablennamen in globalenv()./Stattdessen with(df,{…}) oder df$Variante nutzen.
Wann ist with() nützlich?
- Wenn man innerhalb einer Funktion oder Formel wiederholt auf Spalten eines Dataframes zugreifen will, ohne df$ zu schreiben.
Wann verwendet man merge()?
- Wenn man zwei Tabellen anhand gemeinsamer Schlüsselspalten kombinieren möchte (ähnlich SQL JOIN)./merge() = Base R-Äquivalent zu dplyr::left_join usw.
Wann nutzt man reshape()?
- Wenn Daten von wide zu long oder umgekehrt konvertiert werden müssen./z. B. Zeitreihen oder Messwiederholungen.
Wann ist Vectorization besser als Schleifen?
- Wenn eine Operation elementweise auf Vektoren angewendet werden kann → kompakterer Code, weniger Overhead, schnellere Ausführung in C.
Wann sollte man Lazy Evaluation beachten?
- Wenn Argumente große Berechnungen enthalten → sie werden erst ausgewertet, wenn im Funktionskörper wirklich gebraucht.
Wann sind anonyme Funktionen praktisch?
- Bei einmaligen Operationen in lapply/sapply ohne separate Funktionsdefinition./z. B. lapply(1:3, function(x)x^2).
Wann verwendet man Profiling-Tools wie Rprof()?
- Wenn Code langsam ist → zur Identifikation zeitintensiver Funktionen oder Speicherlecks.
Wann ist ggplot2 statt base plot besser?
- Für komplexe, wiederholbare Visualisierungen mit Schichtsystem (Grammar of Graphics)./Base plot ist schneller für einfache Ad-hoc-Plots.
Wann sollte man dev.off() verwenden?
- Nach Erzeugen von PDF/PNG-Plots → schließt Grafikgerät und speichert Datei.
Wann nutzt man set.seed()?
- Immer, wenn Zufallsergebnisse reproduzierbar sein sollen (z. B. bei Simulationen oder Stichproben).
Wann ist aggregate() gegenüber dplyr-Summarize sinnvoll?
- Bei reinem Base R-Code ohne dplyr-Abhängigkeiten oder in Skripten, die auf Minimalumgebungen laufen sollen.
Wann ist summary() besser als str()?
- summary() → statistische Kennzahlen,/str() → Struktur und Datentypen.
Wann ist cor() statt cov() sinnvoll?
- Wenn man den linearen Zusammenhang zwischen zwei Variablen standardisiert (Skaleneffekte entfernt) messen will.
Wann nutzt man aov() statt lm()?
- aov() = ANOVA-Kurzform für Mittelwertvergleiche,/lm() allgemeiner für lineare Regressionen (gleiche Modellbasis).
Wann ist attach() mit Vorsicht zu verwenden?
- Wenn Objektnamen doppelt vorkommen könnten → kann Werte überschreiben, daher besser with() oder explicit df$.
Wann ist rm(list=ls()) nützlich?
- Um Arbeitsumgebung komplett zu leeren und frische Session zu starten (z. B. vor Simulationen).
Wann nutzt man environment(), parent.env() oder globalenv()?
- Bei Debugging, Scoping-Analysen oder wenn Funktionen in bestimmten Umgebungen ausgeführt werden sollen.
Wann verwendet man setClass()/new()?
- Bei komplexen, stark strukturierten Daten (S4-System) mit Typ- und Slotkontrolle.
Wann nutzt man generische Funktionen wie show() oder plot()?
- Wenn man objektabhängige Ausgabe will → z. B. plot.data.frame ≠ plot.lm.
Wann ist require() besser als library()?
- In Funktionen/Skripten, wo Ladefehler abgefangen werden sollen (liefert TRUE/FALSE statt Abbruch).
Wann ist update.packages() sinnvoll?
- Bei Projektstart oder periodisch, um alle Pakete auf aktuelle Version zu bringen.
Wann sollte man save()/load() statt write.csv() nutzen?
- Wenn man R-Objekte mitsamt Typ-Informationen speichern will (binär, verlustfrei)/CSV nur für tabellarische Daten.
Wann nutzt man capture.output()?
- Wenn Konsolenausgabe in String- oder Logdatei umgeleitet werden soll (z. B. für Dokumentation).
Wann ist profiling mit profvis() besser als system.time()?
- Wenn man detaillierte Visualisierung der Funktionsaufrufe braucht statt nur Gesamtzeit.
Wann ist die Funktion tryCatch() nützlich?
- Wenn Code robust auf Fehler reagieren soll, ohne gesamte Ausführung zu stoppen.
Wann nutzt man on.exit()?
- Wenn Ressourcen (Dateien, Verbindungen) auch bei Fehlern sicher geschlossen werden müssen.
Wann ist stopifnot() hilfreich?
- Für Input-Validierung und einfache Assertions → bricht bei Verletzung sofort ab.
Wann ist unclass() praktisch?
- Wenn man Rohdaten ohne Klassenattribute braucht (z. B. für Debugging oder Typvergleiche).
Wann ist der Einsatz von new.env() sinnvoll?
- Wenn man temporäre, isolierte Variable-Speicher braucht (z. B. Funktionskapselung oder Caching).
Wann nutzt man attributes() und attr()?
- Wenn man Zusatzinformationen (Metadaten) an Objekte hängen oder auslesen will.
Wann ist der Unterschied zwischen list und environment wichtig?
- Liste = statische Datenstruktur,/Environment = dynamisch, erlaubt direkte Zuweisung via Namen (mutable).
Wann verwendet man by() statt aggregate()?
- Wenn unterschiedliche Funktionen auf Gruppen angewendet werden sollen oder Ausgabe Listenstruktur haben soll.
Wann ist data.frame() vs. tibble() relevant?
- tibble (dplyr-Paket) → moderner, keine automatischen Namensanpassungen, besseres Printing./data.frame() → Base R-Standard.
Wann ist table() vs. prop.table() sinnvoll?
- table() → absolute Häufigkeit,/prop.table() → relative Anteile in Prozent.
Wann sollte man mean() und median() vergleichen?
- mean() → empfindlich gegenüber Ausreißern,/median() → robust → für schiefe Verteilungen besser geeignet.
Wann nutzt man boxplot() statt hist()?
- boxplot() → Vergleich mehrerer Gruppen möglich,/hist() → reine Häufigkeitsverteilung einer Variable.
Wann nutzt man pairs()?
- Um lineare Zusammenhänge zwischen mehreren numerischen Variablen visuell zu erkennen.
Wann nutzt man legend()?
- Wenn mehrere Datengruppen im Plot gezeigt werden und farbliche Erklärung notwendig ist.
Zuletzt geändertvor 2 Monaten