メモ:listの要素にNULLを代入したいときは x$attr <- NULL じゃなくて x["attr"] <- list(NULL)

定期的に忘れるのでメモ。たぶんまた忘れるけど。

具体的に困っていたのは、ggplot2のaesを操作したい、というケースで、これにcolour = NULLを追加したい。

a <- aes(x = col1, y = col2)
a
#> * x -> col1
#> * y -> col2

しかし直接代入してもうまくいかない。これは$<-NULLを渡すのは要素を削除するというセマンティクスだからだ。

a$colour <- NULL
a
#> * x -> col1
#> * y -> col2

こうすればいける。

a["colour"] <- list(NULL)
a
#> * x      -> col1
#> * y      -> col2
#> * colour -> NULL