Select R 中从位置 x 开始的每第 n 列

Select every nth column in R from position x

假设数据是

v1<-c(1,2,3)
v2<-c(3,1,2)
v3<-c(5,4,3)
v4<-c(2,3,2)
v5<-c(6,2,1)
v6<-c(1,1,2)
v7<-c(2,2,1)
mydata<-data.frame(v1,v2,v3,v4,v5,v6,v7)

我想要从位置 v3 开始的所有其他列。

  v3 v5 v7
1  5  6  2
2  4  2  2
3  3  1  1

我不确定如何从某个位置使用 seq() 而不是从第一列开始。

我们可以使用matchseq - match returns匹配'v3'的列名的位置索引,然后使用seq,其中 by 作为 2,to 作为最后一列的索引 (ncol)

mydata[seq(match('v3', names(mydata)), ncol(mydata), by = 2)]

-输出

  v3 v5 v7
1  5  6  2
2  4  2  2
3  3  1  1

或在 dplyr 中与 num_range

library(dplyr)
mydata %>% 
   select(num_range(prefix = "v", range = seq(3, last_col(), by = 2)))

-输出

  v3 v5 v7
1  5  6  2
2  4  2  2
3  3  1  1