Значения тегов NA в R [duplicate]

Из объяснения Эрика это связано с тем, что console.log() находится в очереди, и он печатает более позднее значение массива (или объекта).

Могут быть 5 решений:

1. arr.toString()   // not well for [1,[2,3]] as it shows 1,2,3
2. arr.join()       // same as above
3. arr.slice(0)     // a new array is created, but if arr is [1, 2, arr2, 3] 
                    //   and arr2 changes, then later value might be shown
4. arr.concat()     // a new array is created, but same issue as slice(0)
5. JSON.stringify(arr)  // works well as it takes a snapshot of the whole array 
                        //   or object, and the format shows the exact structure
19
задан Rich Scriven 25 April 2016 в 23:45
поделиться

3 ответа

Вы также можете использовать addNA().

x <- c(1, 1, 2, 2, 3, NA)
addNA(x)
# [1] 1    1    2    2    3    <NA>
# Levels: 1 2 3 <NA>

Это в основном удобная функция для факторинга с exclude = NULL. Из help(factor) -

addNA изменяет коэффициент, поворачивая NA на дополнительный уровень (так что значения NA подсчитываются, например, в таблицах).

Итак, еще одна причина, по которой это хорошо, потому что, если у вас уже есть коэффициент f, вы можете использовать addNA(), чтобы быстро добавить NA как факторный уровень без изменения f. Как указано в документации, это удобно для таблиц. Он также хорошо читается.

36
ответ дан Rich Scriven 24 August 2018 в 06:49
поделиться

Вы можете добавить NA как уровень и изменить имя уровня на более явное, чем <NA>, используя fct_explicit_na из пакета forcats .

library(forcats)

By по умолчанию вы получаете новый уровень как (Missing):

fct_explicit_na(a)

[1] 1         1         2         2         3         (Missing)
Levels: 1 2 3 (Missing)

Вы можете установить его на что-то еще:

fct_explicit_na(a, "unknown")

[1] 1       1       2       2       3       unknown
Levels: 1 2 3 unknown
11
ответ дан aosmith 24 August 2018 в 06:49
поделиться

Установите аргумент exclude в NULL, чтобы включить NA в качестве уровней (и использовать коэффициент вместо as.factor. Делает то же самое и имеет больше аргументов):

a = factor(as.character(c(1, 1, 2, 2, 3, NA)), exclude = NULL)

> a
[1] 1    1    2    2    3    <NA>
Levels: 1 2 3 <NA>
13
ответ дан LyzandeR 24 August 2018 в 06:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: