如何使用dplyr选择带向量作为输入的带引号的列

时间:2017-09-04 07:09:49

标签: r dplyr

我有以下数据框(tibble)

library(dplyr)

dat <- structure(list(`YY_164.XXX-ad` = c(0.004, 0, 0, 0.001, 0.001, 
0.001), `YY_165.XXX-ad` = c(0.022, 0.001, 0, 0.001, 0.002, 0
), `YY_162.XXX-ad` = c(0.013, 0, 0, 0.001, 0.001, 0.001), `YY_163.XXX-ad` = c(0.023, 
0, 0, 0.001, 0, 0.001), `YY_166.XXX-ad` = c(0.062, 0.001, 0.001, 
0.001, 0.005, 0.001)), .Names = c("YY_164.XXX-ad", "YY_165.XXX-ad", 
"YY_162.XXX-ad", "YY_163.XXX-ad", "YY_166.XXX-ad"), row.names = c(NA, 
-6L), class = c("tbl_df", "tbl", "data.frame"))
dat
#> # A tibble: 6 x 5
#>   `YY_164.XXX-ad` `YY_165.XXX-ad` `YY_162.XXX-ad` `YY_163.XXX-ad`
#>             <dbl>           <dbl>           <dbl>           <dbl>
#> 1           0.004           0.022           0.013           0.023
#> 2           0.000           0.001           0.000           0.000
#> 3           0.000           0.000           0.000           0.000
#> 4           0.001           0.001           0.001           0.001
#> 5           0.001           0.002           0.001           0.000
#> 6           0.001           0.000           0.001           0.001
#> # ... with 1 more variables: `YY_166.XXX-ad` <dbl>

我想要做的是根据矢量选择列:

pp <- c('YY_164.XXX-ad','YY_165.XXX-ad')

我试过这个,但是有错误:

dat %>% 
  select_(pp)
#> Error in overscope_eval_next(overscope, expr): object 'YY_164.XXX' not found

这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

select出了什么问题?你试过吗?你有不同版本的dplyr(0.7.2)吗?:

> dat %>% select(pp)
# A tibble: 6 x 2
  `YY_164.XXX-ad` `YY_165.XXX-ad`
            <dbl>           <dbl>
1           0.004           0.022
2           0.000           0.001
3           0.000           0.000
4           0.001           0.001
5           0.001           0.002
6           0.001           0.000

答案 1 :(得分:2)

您需要使用.dots =参数来包含您的var名称:

pp <- c("YY_164.XXX-ad","YY_165.XXX-ad")
dat %>% 
  select(.dots = pp)
# A tibble: 6 x 2
.dots1 .dots2
<dbl>  <dbl>
  1  0.004  0.022
2  0.000  0.001
3  0.000  0.000
4  0.001  0.001
5  0.001  0.002
6  0.001  0.000