Ответ 1
+1 для использования data.frame с именем blarg.
Чтобы расширить то, что сказал Бен, факторы внутренне хранятся как целые числа, поэтому, когда вы делаете что-то вроде этого, R не обрабатывает его так, как вы ожидаете.
Взгляните на str(blarg)
в шагах вашего кода выше.
Вы можете использовать stringsAsFactors=FALSE
, как предложил Бен, или использовать коэффициент:
ifelse(blarg$a!='bb', levels(blarg$a), 'ZZZ')
Или еще лучше, если вы хотите заменить уровни blarg$a
, которые 'bb'
, вы можете полностью исключить оператор ifelse
:
levels(blarg$a)[levels(blarg$a)=='bb'] <- 'ZZZ'