使用dplyr :: select排列列而不使用硬编码

时间:2015-04-26 16:03:40

标签: r dataframe dplyr

我正在加载一个csv文件。我试图根据我的列名字符串排列列。我有大约50列。我很好奇如何使用

排列列
  dplyr::select 

我看到它所采用的参数是直接的列名,而不是将其作为字符串引用。所以可能要对名称进行硬编码。如果我使用

引用数据帧(并避免使用硬编码),这很容易做到
 [

这是一个例子

table = data.frame(cnty=c(1,2,3), empcnt1=c(200,300,400), 
wage1=c(40,50,60),empcnt2=c(200,300,400),
wage2=c(40,50,60),empcnt3=c(200,300,400), wage3=c(40,50,60))

col.string <- c("empcnt1","wage1","empcnt2","wage2","empcnt3","wage3","cnty")
table1 <- table[col.string]

使用

dplyr::select
table2 <- select(table,empcnt1,wage1,empdiff,empcnt2,wage2,empcnt3,wage3,cnty)
table2 <- select(table,empcnt1:wage3,cnty)

注意我无法利用我的事实

col.string

我有大约50列,因此在使用dplyr时尝试避免硬编码:select。

1 个答案:

答案 0 :(得分:4)

根据它的声音,您希望将select_.dots参数一起使用:

> table %>% select_(.dots = col.string)
  empcnt1 wage1 empcnt2 wage2 empcnt3 wage3 cnty
1     200    40     200    40     200    40    1
2     300    50     300    50     300    50    2
3     400    60     400    60     400    60    3