[Rd] Should `expand.grid()` consistently drop `NULL` inputs?
Davis Vaughan
d@v|@ @end|ng |rom po@|t@co
Mon Oct 2 21:01:41 CEST 2023
Hi all,
I noticed that `expand.grid()` has somewhat inconsistent behavior with
dropping `NULL` inputs. In particular, if there is a leading `NULL`,
then it ends up as a column in the resulting data frame, which seems
pretty undesirable. Also, notice in the last example that `Var3` is
used as the column name on the `NULL`, which is wrong.
I think the most consistent behavior would be to unconditionally drop
`NULL`s anywhere they appear (i.e. treat an `expand.grid()` call with
`NULL` inputs as semantically equivalent to the same call without
`NULL`s).
```
dropattrs <- function(x) {
attributes(x) <- list(names = names(x))
x
}
# `NULL` dropped
dropattrs(expand.grid(NULL))
#> named list()
# `NULL` dropped
dropattrs(expand.grid(1, NULL))
#> $Var1
#> numeric(0)
# Oh no! Leading `NULL` ends up in the data frame!
dropattrs(expand.grid(NULL, 1))
#> $Var2
#> NULL
#>
#> [[2]]
#> numeric(0)
# Oh no! This one does too!
dropattrs(expand.grid(1, NULL, 2))
#> $Var1
#> numeric(0)
#>
#> $Var3
#> NULL
#>
#> [[3]]
#> numeric(0)
```
Thanks,
Davis
More information about the R-devel
mailing list