If you replace an element of an #Rstats list with NULL, it shortens the list.
Well, sometimes.
> a = list(1, 2, 3, 4, 5)
> b = list(8, NULL, 10)
> length(a)
[1] 5
> a[2:4] = b
> length(a)
[1] 5
> a
[[1]]
[1] 1
[[2]]
[1] 8
[[3]]
NULL
[[4]]
[1] 10
[[5]]
[1] 5
> a[3] = NULL
> length(a)
[1] 4
@rythur @data_science What's odd is that, between the two different ways of making a list element null, one leaves the null in the list, while the other removes it and shortens the list.
@rythur @data_science Well, I'm looking for the rules, and things like this stick out.
If you like that sort of thing, you'll love Gary Bernhardt's Wat video:
@peterdrake Assigning NULL is the way you delete something in a list (like a column from a data frame)
> mtcars <- mtcars
> ncol(mtcars)
[1] 11
> mtcars$mpg <- NULL
> ncol(mtcars)
[1] 10
If you want to keep the length, you should assign NULL as a list.
> rm(mtcars)
> mtcars <- mtcars
> ncol(mtcars)
[1] 11
> mtcars$mpg <- list(NULL)
> ncol(mtcars)
[1] 11
@hhmacedo Yeah, I got that. It just strikes me as odd that these things behave differently. I would expect
v[1:3] <- list(1, NULL, 3)
to behave just like:
v[1] <- 1
v[2] <- NULL
v[3] <- 3
@peterdrake For every rule, there is an exception 😅
@peterdrake @data_science I use NULL as a temporary place holder within functions when I want behavior like this. Based on what I've learned, this makes sense for the Language. Is it odd to use NULL in this way for a programming language? R also has NA and NaN, which may reflect the expected behavior more quickly.