R子集使用感兴趣的第一个和最后一个列名称

时间:2016-07-18 22:09:00

标签: r subset

> df
  a b c  d  e
1 1 4 7 10 13
2 2 5 8 11 14
3 3 6 9 12 15

要对列b,c,d进行子集化,我们可以使用df[,2:4]df[,c("b", "c", "d")]。但是,我正在寻找一个解决方案,它使用df[,b:d]之类的东西来获取列b,c,d。换句话说,我想简单地使用感兴趣的第一个和最后一个列名来对数据进行子集化。我一直在寻找解决方案,但没有成功。我在日期之前看到的所有示例都是在子集化时引用每个特定的列名。

2 个答案:

答案 0 :(得分:3)

它在基数R中也很简单,例如:

subset(df, select=b:d)

或推出自己的:

df[do.call(seq, as.list(match(c("b","d"), names(df))) )]

答案 1 :(得分:1)

如果您愿意使用dplyr

dplyr::select(df, b:d)

  b c  d
1 4 7 10
2 5 8 11
3 6 9 12