nico - 1 year ago 85

R Question

I'm running into a strange problem. I have a vector of lists and I use

`unlist`

`NULL`

`unlist`

Here's a simple (non) working example showing this

`unlist`

`a = c(list("p1"=2, "p2"=5),`

list("p1"=3, "p2"=4),

list("p1"=NULL, "p2"=NULL),

list("p1"=4, "p2"=5))

unlist(a)

p1 p2 p1 p2 p1 p2

2 5 3 4 4 5

Answer Source

The issue here is that you can't have `NULL`

in the middle of a vector. For example:

```
> c(1,NULL,3)
[1] 1 3
```

You can have NA in the middle though. You could could convert it to character and then back to numeric, which automatically converts the NULL values to NA (with a warning):

```
> b <- as.numeric(as.character(a))
Warning message:
NAs introduced by coercion
```

then put the names back in, because they've been dropped by the previous operation:

```
> names(b) <- names(a)
> b
p1 p2 p1 p2 p1 p2 p1 p2
2 5 3 4 NA NA 4 5 `
```