Verwenden von switch() in R zu ersetzen Vektor-Werte

Diese sollte ziemlich einfach, aber auch nach der überprüfung aller Unterlagen und on-line-Beispiele, die ich verstehe es nicht.

Ich möchte die switch () - ersetzen Sie die Werte ein Charakter-Vektor.

Fake, extrem einfache, reproduzierbare Beispiel:

test<-c("He is", "She has", "He has", "She is")

Let ' s sagen, ich will weisen Sie "1" in Sätzen einschließlich der verb "to be" und "2" Sätze einschließlich das verb "haben". Der folgende Code funktioniert NICHT:

test<-switch(test,
                "He is"=1,
                "She is"=1,
                "He has"=2,
                "She has"=2)

Fehlermeldung:

+ + + + Error in switch(test, `He is` = 1, `She is` = 1, `He has` = 2, `She has` = 2) : 
  EXPR must be a length 1 vector

Ich denke, EXPR ist in der Tat ein Vektor der Länge 1, also, was ist falsch?

Dachte ich, vielleicht R erwarteten Zeichen als Ersatz, aber weder die Verpackung wechseln() in einem "als".integer" noch die folgenden arbeiten:

test<-switch(test,
                "He is"="1",
                "She is"="1",
                "He has"="2",
                "She has"="2")

Vielleicht ist es noch nicht zu Vektorisieren, und sollte ich eine Schleife? Ist es das? Wäre enttäuschend, in Anbetracht der Stärke von R ist die Vektorisierung. Vielen Dank im Voraus!

  • Vektor "test" ist von der Länge 4 sein. So kann das nicht funktionieren. Finden Sie mit test <- "He is".
  • Sind Sie versuchen, dies zu erreichencode <- c("He is"=1, "She is"=1, "He has"=2, "She has"=2); code[test]?
  • Wow @Experimentator, ist die elegante... ich wusste nicht, dass, wenn ich wählen Sie Objekte von einem numerischen Vektor mit einem Namen Attribut-Verwendung eines Zeichens, R möchten, verwenden Sie die names-Attribut entsprechen die zahlen der numerische Vektor-zu meinem Charakter-Vektor. Dies ist meine Lieblings-Lösung, aber ich kann nicht wählen Sie es als die Antwort, weil die Frage war, wie zu verwenden, wechseln Sie() richtig. Thumbs up tho
InformationsquelleAutor torwart | 2015-07-01
Schreibe einen Kommentar