Es gibt eine switchAussage, 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.numericoder betrachten switch.character. Wenn Ihr erstes Argument ein R-Faktor ist, erhalten Sie ein switch.numericVerhalten, 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 ...?