От help("NA")
:
Существуют также константы NA_integer_, NA_real_, NA_complex_ и NA_character_ других типов атомных векторов, которые поддерживают отсутствие значения: все это зарезервированные слова в языке R.
Мой вопрос в том, почему нет NA_logical_
или подобного, и что с ним делать.
В частности, я создаю несколько очень похожих похожих data.table
s, которые должны быть совместимы с классами для более позднего rbind
ing. Если в одной из data.table
отсутствует переменная, я создаю этот столбец, но с ней устанавливается все NA
конкретного типа. Однако для логического я не могу этого сделать.
В этом случае это, вероятно, не имеет большого значения (data.table
не нравится принудительное использование столбцов от одного типа к другому, но также не нравится добавлять строки, поэтому мне нужно создать новую таблицу для хранения rbound-версии), но я озадачен тем, почему NA_logical_
, который логически должен существовать, нет.
Пример:
library(data.table)
Y <- data.table( a=NA_character_, b=rep(NA_integer_,5) )
Y[ 3, b:=FALSE ]
Y[ 2, a:="zebra" ]
> Y
a b
1: NA NA
2: zebra NA
3: NA 0
4: NA NA
5: NA NA
> class(Y$b)
[1] "integer"
Два вопроса:
- Почему
NA_logical_
не существует, когда его родственники делают? - Что мне делать с этим в контексте
data.table
или просто чтобы избежать принуждения как можно больше? Я предполагаю, что использованиеNA_integer_
покупает меня немного с точки зрения принуждения (он будет принуждать логический я добавляю к 0L/1L, что не страшно, но не идеально.