W języku RI chcesz zrobić coś takiego w instrukcji if, jak na poniższym przykładzie, w którym szukam kolorów w kolumnie mix $ color, które zawierają słowo red i ustawiają nową zmienną w mieszanej ramce danych do koloru czerwonego.R jak używać polecenia grep, jeśli instrukcja
mix$newcolor <- if(grep("Red",mix$color) "red"
A oto kilka przykładowych danych dla mieszanki dataframe:
AliceBlue BlueVioletcolor darkred MediumVioletRed
Dostaję komunikat o błędzie: Komunikat
Ostrzeżenie : W przypadku (grepl ("deep red", mix $ co lor) == true) „czerwony”: warunek ma długość> 1 i tylko pierwszy element będzie używany
myślę że Grepl należy powrocie prawdziwą lub fałszywą wartość logiczną tak że powinno być dopuszczalne, ale ja "czegoś mi brakowało (lub dużo).
Dzięki za pomoc.
Potrzebujesz tu wektoryzowanego 'ifelse' zamiast normalnego, jeśli i jeszcze innego. Nie potrzebujesz również == true, gdy używasz grepl. –
Tak, to działało jak mistrz. Zastanawiałem się nad użyciem ifelse wcześniej, ale zostałem zakwestionowany w innej części, ale powiem tylko mix $ newcolor dla innego. Będzie albo puste, albo ma wartość przekonwertowaną. Dzięki. – Jazzmine
Jedną z zalet ifelse jest to, że można je łatwo zagnieździć. Powiedzmy, że chcesz przekształcić swój wektor koloru w "czyste" kolory: 'color = c (" AliceBlue "," BlueViolet "," DarkRed "," MediumVioletRed "," DarkGreen "); ifelse (grepl ("czerwony", kolor), "czerwony", ifelse (grepl ("zielony", kolor), "zielony", ifelse (grepl ("niebieski", kolor), "niebieski", "inny"))) ' – xraynaud