Dies ist eine reine Neugier (Lernen Sie mehr über Reduce). Es gibt viel bessere Methoden, um das zu erreichen, was ich mache, und ich bin nicht an ihnen interessiert.mit Reduce/do.call mit ifelse
Einige Leute verwenden eine Reihe verschachtelter ifelse
Befehle, um etwas zu rekodieren/nachzuschlagen. Vielleicht sieht es wie folgt aus:
set.seed(10); x <- sample(letters[1:10], 300, T)
ifelse(x=="a", 1,
ifelse(x=="b", 2,
ifelse(x=="c", 3,
ifelse(x=="d", 4, 5))))
Gibt es eine Möglichkeit, entweder do.call
oder Reduce
mit dem ifelse
zu verwenden, um ein wenig mehr eloquent den Job zu erledigen?
Große Frage. Natürlich ist in der Praxis etwas wie 'sapply (x, Funktion (x) Schalter (x, a = 1, b = 2, c = 3, d = 4, 5 ') wahrscheinlich am saubersten. –
@Richie Danke. d nähert sich dies tatsächlich mit einer Nachschlagetabelle unter Verwendung von Umgebungen oder einer Standardindizierung mit 'match' an, aber ich wollte sehen, ob' Reduce' oder 'do.call' auf dieses Problem angewendet werden könnte. –
Wie in:' match (x, letters [1: 4], nomatch = 5) ' –