Это из-за этой одной строки в as.matrix.data.frame
:
if (any(dm == 0L)) return(array(NA, dim = dm, dimnames = dn))
В принципе, если любые измерения равны нулю, вы получаете массив "full" из NA
.Я говорю «полный», потому что на самом деле нет никаких наблюдений, потому что одно из измерений равно нулю.
Причина, по которой класс logical
, заключается в том, что это класс NA
.Есть специальные NA
для других классов, но они здесь не очень нужны.Например:
> class(NA)
[1] "logical"
> class(NA_integer_)
[1] "integer"
> class(NA_real_)
[1] "numeric"
> class(NA_complex_)
[1] "complex"
> class(NA_character_)
[1] "character"