Zuweisungs- und spezielle Operatoren
Erkunden Sie >, %in% und den Pipe-Operator in R.
Zuweisungs- und spezielle Operatoren ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Zuweisungen in R
R bietet mehrere Möglichkeiten, Variablen Werte zuzuweisen. Die idiomatischste Schreibweise ist <-; sie gilt als bevorzugter Stil. Sie werden auch = für Zuweisungen sehen, wobei sich das Verhalten in einigen Kontexten leicht unterscheidet.
# Both assign a value, <- is preferred
name <- 'Alice'
age = 30
cat('Name:', name, '
')
cat('Age:', age, '
')Linkspfeil <- im Vergleich zu Gleichheitszeichen =
<- erstellt immer eine Variable in der aktuellen Umgebung. Mit = kann ebenfalls eine Zuweisung vorgenommen werden, innerhalb von Funktionsaufrufen werden damit jedoch benannte Argumente festgelegt, anstatt eine Variable zu erstellen. Dieser Unterschied ist wichtig.
# <- creates a variable outside function calls
x <- 42
# = inside function call sets argument, does NOT create x
mean(x = c(1, 2, 3)) # x is an arg here, not a variable
# But <- inside a function call DOES create a variable
mean(y <- c(1, 2, 3)) # y is now also in workspace
cat('y was created:', y, '
')Rechtsseitiger Zuweisungsoperator ->
R unterstützt auch die Zuweisung von rechts nach links mit ->. Dabei wird die linke Seite dem Namen auf der rechten Seite zugewiesen. Obwohl diese Schreibweise gültig ist, wird sie in der Praxis selten verwendet, da sie die Lesbarkeit verringert.
# Right assignment operator
100 -> max_score
'R Programming' -> course_name
cat('Max score:', max_score, '
')
cat('Course:', course_name, '
')
# Same as:
# max_score <- 100
# course_name <- 'R Programming'Globale Zuweisung mit <<-
<<- weist einer Variable in der übergeordneten (einschließenden) Umgebung einen Wert zu, nicht in der lokalen Funktionsumgebung. Der Operator wird innerhalb von Funktionen verwendet, um eine Variable zu ändern, die außerhalb der Funktion existiert.
counter <- 0
increment <- function() {
counter <<- counter + 1 # modifies the global counter
}
increment()
increment()
increment()
cat('Counter after 3 increments:', counter, '
')Der Zugehörigkeitsoperator %in%
%in% prüft, ob jedes Element auf der linken Seite im Vektor auf der rechten Seite vorkommt. Der Operator gibt einen logischen Vektor mit derselben Länge wie der linke Operand zurück. Dies ist die übersichtlichste Möglichkeit, in R die Zugehörigkeit zu einer Menge zu prüfen.
fruits <- c('apple', 'banana', 'cherry', 'date', 'elderberry')
# Check membership
cat('Is mango in fruits?', 'mango' %in% fruits, '
')
cat('Is cherry in fruits?', 'cherry' %in% fruits, '
')
# Check multiple values at once
search <- c('banana', 'mango', 'date')
cat('Which are in fruits:', search %in% fruits, '
')Filtern mit %in%
%in% ist besonders leistungsfähig, wenn der Operator zum Filtern von Vektoren oder Zeilen von Data Frames verwendet wird. Damit können Sie Elemente auswählen, die zu einer vordefinierten Menge zulässiger Werte gehören.
countries <- c('USA', 'UK', 'Canada', 'Germany', 'France', 'Japan')
populations <- c(331, 67, 38, 83, 67, 126) # millions
# Keep only G7 European members
g7_europe <- c('UK', 'Germany', 'France', 'Italy')
mask <- countries %in% g7_europe
cat('G7 Europe countries:', countries[mask], '
')
cat('Populations:', populations[mask], '
')Matrixmultiplikation mit %*%
%*% führt eine echte Matrixmultiplikation (Skalarmultiplikation) durch, im Gegensatz zu *, das elementweise multipliziert. Für zwei Matrizen A (m x n) und B (n x p) ist das Ergebnis eine (m x p)-Matrix.
A <- matrix(c(1, 2, 3, 4), nrow = 2, ncol = 2)
B <- matrix(c(5, 6, 7, 8), nrow = 2, ncol = 2)
cat('Matrix A:
')
print(A)
cat('Matrix B:
')
print(B)
cat('A %*% B (matrix mult):
')
print(A %*% B)
cat('A * B (element-wise):
')
print(A * B)Die native Pipe |>
Die in R 4.1 eingeführte native Pipe |> übergibt das Ergebnis des Ausdrucks auf der linken Seite als erstes Argument an die Funktion auf der rechten Seite. Dadurch werden Ketten von Operationen deutlich lesbarer.
# Without pipe
result1 <- round(sqrt(abs(-16)), 2)
cat('Without pipe:', result1, '
')
# With native pipe |>
result2 <- -16 |> abs() |> sqrt() |> round(2)
cat('With pipe:', result2, '
')
# Reading left to right: take -16, get abs, sqrt, then roundPipes mit Vektoren
Die native Pipe |> ist besonders bei Vektoren und numerischen Operationen nützlich. Sie können Transformationen miteinander verketten, ohne Zwischenvariablen zu erstellen. Dadurch wird Ihr Code übersichtlicher und leichter nachvollziehbar.
scores <- c(88, 45, 92, 61, 73, 55, 84, 79)
# Chain: keep passing scores, then compute mean
passing_mean <- scores |> \(x) x[x >= 60] |> mean()
cat('Mean of passing scores:', round(passing_mean, 2), '
')
# Another chain: sort, reverse, take top 3
top3 <- scores |> sort(decreasing = TRUE) |> head(3)
cat('Top 3 scores:', top3, '
')Benutzerdefinierte Infix-Operatoren
In R können Sie mit der Syntax %name% benutzerdefinierte Infix-Operatoren definieren. So definieren Pakete wie dplyr beispielsweise die Pipe %>%. Sie können eigene Operatoren für domänenspezifische Operationen erstellen.
# Define a custom infix operator for 'not in'
'%notin%' <- function(x, table) !(x %in% table)
cities <- c('Paris', 'London', 'Berlin', 'Tokyo', 'Sydney')
exclude <- c('Tokyo', 'Sydney')
cat('Cities not in exclude list:', cities[cities %notin% exclude], '
')Kurzübersicht der Operatoren
Hier finden Sie eine Zusammenfassung der speziellen Operatoren aus dieser Lektion:
<-— standardmäßige Zuweisung (bevorzugt)=— Zuweisung (auch für Funktionsargumente verwendet)<<-— Zuweisung in die globale/übergeordnete Umgebung%in%— Prüfung der Zugehörigkeit%*%— Matrixmultiplikation|>— native Pipe (R 4.1+)%name%— Syntax für benutzerdefinierte Infix-Operatoren
# Demonstrate %in% as a filter
all_nums <- 1:20
special <- c(3, 6, 9, 12, 15, 18)
cat('Multiples of 3 up to 20:', all_nums[all_nums %in% special], '
')
# Demonstrate pipe
1:10 |> mean() |> cat('
')Kurze Verständnisprüfung
Was gibt der Operator %in% zurück, wenn er als c(2, 4, 6) %in% c(1, 2, 3) verwendet wird?
Rückblick: Spezielle Operatoren
Gut gemacht! Dies sind die wichtigsten Erkenntnisse aus dieser Lektion:
- Verwenden Sie
<-für Zuweisungen — dies entspricht der Konvention in R =funktioniert für Zuweisungen, ist innerhalb von Funktionsaufrufen jedoch mehrdeutig<<-ändert innerhalb einer Funktion eine Variable in der übergeordneten (globalen) Umgebung%in%ist die übersichtlichste Möglichkeit, in R die Zugehörigkeit zu einer Menge zu prüfen%*%führt eine Matrixmultiplikation durch (keine elementweise Multiplikation)- Die native Pipe
|>(R 4.1+) verkettet Funktionsaufrufe von links nach rechts und sorgt für lesbaren Code - Benutzerdefinierte Operatoren folgen dem Muster
%name%
# Pipe + %in% combined
data <- c(5, 12, 3, 8, 15, 7, 20, 1)
valid_range <- 5:15
result <- data |> \(x) x[x %in% valid_range] |> sort()
cat('Values in range 5-15:', result, '
')Häufig gestellte Fragen
Ist die Lektion „Zuweisungs- und spezielle Operatoren“ kostenlos?
Ja — der vollständige Text von „Zuweisungs- und spezielle Operatoren“ 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 „Zuweisungs- und spezielle Operatoren“?
Erkunden Sie >, %in% und den Pipe-Operator in R. 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 3 von 4.
Wie lange dauert die Lektion „Zuweisungs- und spezielle Operatoren“?
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
- Arithmetische und Vergleichsoperatoren
- Logische Operatoren und boolesche Logik
- Zuweisungs- und spezielle Operatoren
- Operatorrangfolge und komplexe Ausdrücke