[Rd] Is NULL a vector?

Duncan Murdoch murdoch@dunc@n @ending from gm@il@com
Mon Jul 23 21:17:25 CEST 2018


On 23/07/2018 3:03 PM, Hadley Wickham wrote:
> Hi all,
> 
> Would you generally consider NULL to be a vector? 

According to the language definition (in the doc directory), it is not: 
"Vectors can be thought of as contiguous cells containing data. Cells 
are accessed through indexing operations such as x[5]. More details are 
given in Indexing.

R has six basic (‘atomic’) vector types: logical, integer, real, 
complex, string (or character) and raw. The modes and storage modes for 
the different vector types are listed in the following table."

and later

"There is a special object called NULL. It is used whenever there is a 
need to indicate or specify that an object is absent. It should not be 
confused with a vector or list of zero length."

Duncan Murdoch

Base R functions are
> a little inconsistent:
> 
> ## In favour
> 
> ``` r
> identical(as.vector(NULL), NULL)
> #> [1] TRUE
> 
> identical(as(NULL, "vector"), NULL)
> #> [1] TRUE
> 
> # supports key vector vector generics
> length(NULL)
> #> [1] 0
> NULL[c(3, 4, 5)]
> #> NULL
> NULL[[1]]
> #> NULL
> ```
> 
> ## Against
> 
> ``` r
> is.vector(NULL)
> #> [1] FALSE
> 
> is(NULL, "vector")
> #> [1] FALSE
> ```
> 
> ## Abstentions
> 
> ``` r
> is.atomic(NULL)
> #> [1] TRUE
> # documentation states "returns NULL if x is of an atomic type (or NULL)"
> # is "or" exclusive or inclusive?
> ```
> 
> Hadley
>



More information about the R-devel mailing list