假设我们有一个字符向量cols_to_select
,其中包含我们要从数据框中选择的一些列df
,例如
df <- tibble::data_frame(a=1:3, b=1:3, c=1:3, d=1:3, e=1:3)
cols_to_select <- c("b", "d")
假设我们也想使用dplyr::select
它,因为它是使用的操作的一部分,%>%
因此使用select
使代码易于阅读。
似乎有许多方法可以实现这一点,但有些方法比其他方法更强大。请你能告诉我哪个是“正确”的版本,为什么?或者也许还有另一种更好的方法?
dplyr::select(df, cols_to_select) #Fails if 'cols_to_select' happens to be the name of a column in df
dplyr::select(df, !!cols_to_select) # i.e. using UQ()
dplyr::select(df, !!!cols_to_select) # i.e. using UQS()
cols_to_select_syms <- rlang::syms(c("b", "d")) #See [here](https://stackoverflow.com/questions/44656993/how-to-pass-a-named-vector-to-dplyrselect-using-quosures/44657171#44657171)
dplyr::select(df, !!!cols_to_select_syms)
ps我意识到这可以在base R中简单地使用df[,cols_to_select]