Spectra icon indicating copy to clipboard operation
Spectra copied to clipboard

Fix is.vector()

Open lgatto opened this issue 10 months ago • 3 comments

This line uses is.vector() to check if a variable is an atomic vector, not only a vector (including a list):

> is.vector(1:5)
[1] TRUE
> is.vector(list())
[1] TRUE
> is.vector(1:5, "numeric")
[1] TRUE
> is.vector(list(), "list")
[1] TRUE

The solution here is the also specify a mode:

> is.vector(1:5, "numeric")
[1] TRUE
> is.vector(list(), "list")
[1] TRUE
> is.vector(1:5, "list")
[1] FALSE

I would suggest to use

  • !is.vector(list(), "list")
  • !is.list()

in such cases.

For that specific code chunk, there's no final else. We could probably test for

  1. is.list(.)
  2. inherits(., "List")
  3. assume the rest are atomic vectors.

@jorainer @sgibb - what do you think?

lgatto avatar Mar 26 '24 10:03 lgatto