如何使用dplyr根据字符串选择列

如何使用dplyr根据字符串选择列,r,dplyr,R,Dplyr,我可以像这样选择和重命名列名,没有任何问题: 图书馆管理员 虹膜%选择萼片长度=萼片长度,萼片宽度=萼片宽度 >一个tibble:150×2 >萼片中的萼片 > > 1 5.1 3.5 > 2 4.9 3.0 > 3 4.7 3.2 > 4 4.6 3.1 > 5 5.0 3.6 > 6 5.4 3.9 > 7 4.6

我可以像这样选择和重命名列名,没有任何问题:

图书馆管理员 虹膜%选择萼片长度=萼片长度,萼片宽度=萼片宽度 >一个tibble:150×2 >萼片中的萼片 > > 1 5.1 3.5 > 2 4.9 3.0 > 3 4.7 3.2 > 4 4.6 3.1 > 5 5.0 3.6 > 6 5.4 3.9 > 7 4.6 3.4 > 8 5.0 3.4 > 9 4.4 2.9 > 10 4.9 3.1 > ... 还有140多行 但是我想做的是从字符串而不是列名调用列。我尝试了以下操作,但失败了:

>想要iris%>%selectsepal\u ln=!!粘贴长度, +萼片_wd=!!需要粘贴0.5毫米宽, + 错误:Sepal.Length、Sepal.Width:必须解析为整数列位置,而不是字符串 > 正确的方法是什么?

我们可以使用select_

此外,select中还有一些包装器可以更轻松地完成这项工作,例如,一个、包含、匹配等可以从数据中选择所需的列

iris %>% 
  select(setNames(one_of(paste0(wanted, c(".Length", ".Width"))),
                 c("sepal_ln", "sepal_wd"))) %>%
  head(2)
# A tibble: 2 × 2
#   sepal_ln sepal_wd
#     <dbl>    <dbl>
#1      5.1      3.5
#2      4.9      3.0
注意:尚不清楚select_uu方法是否会在下一个dplyr版本0.6.0中被弃用

iris %>% 
  select(setNames(one_of(paste0(wanted, c(".Length", ".Width"))),
                 c("sepal_ln", "sepal_wd"))) %>%
  head(2)
# A tibble: 2 × 2
#   sepal_ln sepal_wd
#     <dbl>    <dbl>
#1      5.1      3.5
#2      4.9      3.0