2015-10-07 3 views
0

Я хочу изменить одно значение в data.frame, который является NA, используя этот код df[307, 1] <- 231. Тем не менее, я получаю предупреждениеКак изменить одно значение в data.frame (значение нового уровня)?

warning message: 
In `[<-.factor`(`*tmp*`, iseq, value = 231) : 
invalid factor level, NA generated 

Как я понял правильно, уровень 231 не находится в пределах уровней переменного ([,1] первого столбца). Что я могу сделать для решения этой проблемы? Добавить новый уровень 231? Или другой способ изменить это значение. Спасибо за ваши идеи.

+2

Колонка 'factor' класс. Измените это на 'character' или добавьте уровень в существующий столбец факторов, а затем замените – akrun

ответ

2

Как @akrun отмечено в комментариях:

x <- factor(c("a", "b")) 
x[3] <- "c" 
Warning message: 
In `[<-.factor`(`*tmp*`, 3, value = "c") : 
    invalid factor level, NA generated 
# one solution: 
x <- factor(c("a", "b")) 
x <- factor(c(as.character(x), "c")) 

# a second solution: 
x <- factor(c("a", "b")) 
levels(x) <- c("a", "b", "c") 
x[3] <- "c"