tibbleからdoubleのデータだけ取り出したい場合、どうすればいいか少し手間取ったので、覚書を残す。
require(dplyr)
require(nycflights13)
weather <- nycflights13::weather %>%
select(origin, time_hour, temp, humid, precip)
注釈:このweatherというデータはoriginがchar, time_hourがdate, それ以外がdoubleになっている。
まず、うまく行かないやり方:
weather %>% select_if(is.double)
うまく行かない理由:date型がdoubleを継承しているため、is.doubleでdate型のtime_hourも返されてしまう。
うまくいくやり方(is.numericを使う):
weather %>% select_if(is.numeric)
うまくいく理由:よくわからない。numeric→double→dateと継承しているはずなので、is.numericでもdate型(time_hour)が返されるのが(仕様上は)正しいような気がするが、現時点(2024/03/09)のdplyrではdate型(time_hour)が返ってこない(参考文献2を参照されたい)。Bad know-howかも。
参考文献
r - Why is `select_if(., is_double)` returning dates? - Stack Overflow