Является ли as.logical глючным? - PullRequest
2 голосов
/ 04 мая 2019

Кто-нибудь знает, почему функция as.logical неправильно обрабатывает NULL записи?

as.logical(NULL)
#logical(0)

as.logical(list(NA, 1, logical(0)))
#[1]   NA TRUE   NA

as.logical(list(NA, 1, logical(0), NULL))
#Error: (list) object cannot be coerced to type 'logical'

Фактические результаты - ошибка, в то время как (логически) ожидаемый результат должен быть вектором [NA, TRUE, NA, NA]

1 Ответ

3 голосов
/ 04 мая 2019

Я отвечу на причину ошибки: NULL имеет два (или более) использования, в данном случае в центре внимания находится паирлист.Из документов:

NULL также используется в качестве пустого списка пользователей: см. Примеры.Поскольку парелисты часто переводятся в списки, вы можете столкнуться с тем, что NULL превращается в пустой список.

Следовательно, ошибка связана с тем, что NULL интерпретируется как парилист.

Воспроизвести ошибку:

as.logical(list(as.pairlist(NULL)))

Ошибка: (список) объект не может быть приведен к типу «логический»

Проблема возникает тогда, когда NULLповышен до пустого списка.См. здесь для получения подробной информации о списках.

Пустой pairlist, pairlist () такой же, как NULL.Это отличается от list (): некоторые, но не все операции переводят пустой список пользователей в пустой список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...