2016-12-18 2 views
1

список:Замена частей кадра данных в г

number name age status 
1  ben 34 m 
2  max 12 s 
3   27 s 
4   42 d 

У меня есть этот список, и я пытался заменить пустые части в «имя» coulm.

это мой код (все мои попытки):

list$name[3] <- "eric" 
list[3,2] <- "eric" 
list[3,2] <- 0 
list[is.na(list)] <- 0 

это ошибка:

Warning message: 
In `[<-.factor`(`*tmp*`, 3, value = c(2L, 3L, NA, NA, 1L, 1L, 1L, : 
    invalid factor level, NA generated 

Warning message: 
In `[<-.factor`(`*tmp*`, thisvar, value = 0) : 
    invalid factor level, NA generated 

вы знаете, в чем проблема?

+0

try 'list $ name [[3]] <-" eric "' –

+0

Вы должны прочитать о переменных факторов. Хорошим источником для этого является, например, «Продвинутый R» Хэдли Уикхема: http://adv-r.had.co.nz/Data-structures.html. Простым способом решения вашей проблемы является преобразование переменной фактора в переменную символа с помощью 'as.character()'. – Alex

+0

попробуйте as.character() и [[3]], и я получил то же предупреждение. –

ответ

0

name - факторный столбец, и вы пытаетесь добавить дополнительные «уровни», которые не были определены.

Вы можете либо принудить столбец к столбцу character, и отредактировать, когда вы попытались или добавили уровни в столбец факторов.

list$name <- as.character(list$name) 
list$name[3] <- "eric" 

или

list$name <- factor(list$name, levels=c(levels(list$name), "eric")) 
list$name[3] <- "eric" 

См this answer для более подробной информации.

Смежные вопросы