我想通过选择列来制作我的数据的子集,如下所示:
select(df, col1, col2, col3, col4)
但有时我的数据集略有不同,只有col1,col2和col4。
如何使用select(),如果列不存在,它会继续而不会出错?
因此,它将为col1,col2和col4(以及跳过col3)提供数据集。如果我只运行上面的select()行,我会收到此错误:
Error in overscope_eval_next(overscope, expr) : object 'col3' not found
答案 0 :(得分:5)
df[, names(df) %in% c('col1', 'col2', 'col3', 'col4')]
答案 1 :(得分:3)
您可以使用dplyr中的one_of()
select helper并将列名称作为字符串传递。它只会对不存在的列发出警告。
library(dplyr)
select(mtcars, one_of(c("mpg", "disp", "foo")))
#> Warning: Unknown variables: `foo`
#> mpg disp
#> Mazda RX4 21.0 160.0
#> Mazda RX4 Wag 21.0 160.0
#> Datsun 710 22.8 108.0
#> Hornet 4 Drive 21.4 258.0
#> Hornet Sportabout 18.7 360.0