В R я хочу сделать то же, что и в операторе if, как в приведенном ниже примере, где я ищу любые цвета в столбце mix $ color, которые содержат слово красный, и устанавливаю для новой переменной в кадре данных mix красный цвет.
mix$newcolor <- if(grep("Red",mix$color) "red"
А вот несколько примеров данных для смеси фреймов данных:
АлисаСиний СинийФиолетовый ТемныйКрасный СреднийФиолетовыйКрасный
Я получаю это сообщение об ошибке:
Предупреждающее сообщение: в if (grepl ("deep red", mix $ color) == TRUE) "red": длина условия> 1, и будет использоваться только первый элемент.
Я думаю, что grepl должен возвращать логическое значение ИСТИНА или ЛОЖЬ, так что это должно быть приемлемо, но я что-то упускаю (или много).
Спасибо за вашу помощь.
ifelse
вместо обычных if и else. Вам также не нужно == true при использовании grepl. - person talat   schedule 07.02.2015color = c("AliceBlue", "BlueViolet", "DarkRed", "MediumVioletRed", "DarkGreen"); ifelse(grepl("Red",color),"red",ifelse(grepl("Green",color),"green",ifelse(grepl("Blue",color),"blue","other")))
- person xraynaud   schedule 07.02.2015