Подтвердить что ты не робот

R фактор NA vs <NA>

У меня есть следующий фрейм данных:

df1 <- data.frame(id = 1:20, fact1 = factor(rep(c('abc','def','NA',''),5)))
df1
   id fact1
1   1   abc
2   2   def
3   3    NA
4   4      
5   5   abc
6   6   def
7   7    NA
8   8      
9   9   abc
10 10   def
11 11    NA
12 12      
13 13   abc
14 14   def
15 15    NA
16 16      
17 17   abc
18 18   def
19 19    NA
20 20      

Я пытаюсь стандартизировать все недостающие значения ('' и NA '), чтобы стать NA. Однако, когда я использую это:

df1[df1 == ''] <- NA

похоже, есть 2 класса NA.

df1
   id fact1
1   1   abc
2   2   def
3   3    NA
4   4  <NA>
5   5   abc
6   6   def
7   7    NA
8   8  <NA>
9   9   abc
10 10   def
11 11    NA
12 12  <NA>
13 13   abc
14 14   def
15 15    NA
16 16  <NA>
17 17   abc
18 18   def
19 19    NA
20 20  <NA>

Есть ли метод наилучшей практики для решения этой ситуации?

4b9b3361

Ответ 1

Расширение комментария joran:

df1 <- data.frame(id = 1:5, fact1 = factor(c('abc','def', NA, 'NA','')))
> df1
  id fact1
1  1   abc
2  2   def
3  3  <NA>
4  4    NA
5  5      

df1[df1 == '' | df1 == 'NA'] <- NA
> df1
  id fact1
1  1   abc
2  2   def
3  3  <NA>
4  4  <NA>
5  5  <NA>