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() 而不是从第一列开始。
我们可以使用match
和seq
- 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
假设数据是
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() 而不是从第一列开始。
我们可以使用match
和seq
- 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