Es gibt eine switch
Aussage, aber ich kann nie scheinen, dass sie so funktioniert, wie ich es mir vorstelle. Da Sie kein Beispiel angegeben haben, werde ich eines mit einer Faktorvariablen erstellen:
dft <-data.frame(x = sample(letters[1:8], 20, replace=TRUE))
levels(dft$x)
[1] "a" "b" "c" "d" "e" "f" "g" "h"
Wenn Sie die gewünschten Kategorien in einer Reihenfolge angeben, die der Neuzuweisung entspricht, können Sie den Faktor oder die numerischen Variablen als Index verwenden:
c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x]
[1] "def" "h" "g" "def" "def" "abc" "h" "h" "def" "abc" "abc" "abc" "h" "h" "abc"
[16] "def" "abc" "abc" "def" "def"
dft$y <- c("abc", "abc", "abc", "def", "def", "def", "g", "h")[dft$x] str(dft)
'data.frame': 20 obs. of 2 variables:
$ x: Factor w/ 8 levels "a","b","c","d",..: 4 8 7 4 6 1 8 8 5 2 ...
$ y: chr "def" "h" "g" "def" ...
Ich habe später erfahren, dass es wirklich zwei verschiedene Schalterfunktionen gibt. Es ist keine generische Funktion, aber Sie sollten sie als entweder switch.numeric
oder betrachten switch.character
. Wenn Ihr erstes Argument ein R-Faktor ist, erhalten Sie ein switch.numeric
Verhalten, das wahrscheinlich Probleme verursacht, da die meisten Leute Faktoren als Zeichen anzeigen und die falsche Annahme treffen, dass alle Funktionen sie als solche verarbeiten.
dput()
b) Möchten Sie eine Lösung in Basis R, dplyr, data.table, tidyverse ...?