In RI möchte ich ein like in einer if-Anweisung wie im Beispiel unten machen, wo ich nach Farben in der mix $ color-Spalte suche, die das Wort red enthalten und eine neue Variable setzen im Mixdatenrahmen an die Farbe rot.R Wie benutze ich grep in if-Anweisung
mix$newcolor <- if(grep("Red",mix$color) "red"
Und hier einige Beispieldaten für den Datenrahmen-Mix:
Aliceblue Blueviolet DarkRed MediumVioletRed
Ich bekomme diese Fehlermeldung:
Warnmeldung : In if (grepl ("tiefrot", mix $ co lor) == TRUE) „rot“: hat die Bedingung Länge> 1 und nur das erste Element wird verwendet
Ich denke, dass Grepl einen WAHR oder FALSCH boolean Wert zurückgegeben werden soll, so dass akzeptabel sein sollte, aber ich Ich vermisse etwas (oder viel).
Danke für Ihre Hilfe.
Sie benötigen hier die vektorisierte 'ifelse' anstelle der normalen if und else. Sie brauchen auch nicht == true, wenn Sie grepl verwenden. –
Ja, das hat wie ein Champion funktioniert. Ich hatte schon einmal darüber nachgedacht, ifelse zu verwenden, aber ich war auf dem else-Teil ratlos, aber ich werde nur Mix $ newcolor für den else referenzieren. Es wird entweder leer sein oder einen konvertierten Wert haben. Vielen Dank. – Jazzmine
Ein Vorteil von ifelse ist, dass Sie sie einfach verschachteln können. Nehmen wir an, Sie möchten Ihren Farbvektor in "reine" Farben umwandeln: 'color = c (" AliceBlue "," BlueViolet "," DarkRed "," MediumVioletRed "," DarkGreen "); ifelse (grepl ("Rot", Farbe), "rot", ifelse (grepl ("Grün", Farbe), "grün", ifelse (grepl ("Blau", Farbe), "Blau", "andere"))) ' – xraynaud