我有数据帧df。我想选择以q6、q7、q8、q9、q10和q11开头的列。
如果我写这个表达式,它会工作:
sub_df = df %>%
select( matches("^q(6|7|8|9|10|11)")
如何使用:(seq)函数?有点像
select( matches("^q(6:11)")
或select( matches("^q(6-11)")
但不起作用。我使用这个正则表达式是很新的。
我怎么能做到呢?
谢谢
发布于 2021-07-28 16:45:02
我们可以使用regex来匹配从字符串的开头(^
)开始的'q‘,后面跟着[]
中的值的范围( 6-9
),或者(|
),后面跟着字符串末尾的[0-1]
范围($
)。
library(dplyr)
df %>%
select(matches('^q([6-9]|1[0-1])$'))
-output
q6 q7 q8 q9 q10 q11
1 -0.07430856 -0.64859151 -0.11629639 0.6128514 -4.4695644 0.06735770
2 -0.60515695 -0.09411013 -0.94382724 1.5171225 0.3690450 0.01710596
3 -1.70964518 -0.08554095 -0.03373792 0.6573804 0.1692267 -0.34365937
4 -0.26869311 0.11953107 -0.58542756 -1.0741813 -1.8221903 -0.66789220
数据
set.seed(24)
df <- as.data.frame(matrix(rnorm(12 *4), ncol = 12,
dimnames = list(NULL, paste0("q", 1:12))))
发布于 2021-07-28 15:08:12
df %>% select(starts_with(paste("q",6:11, sep = "")))
https://stackoverflow.com/questions/68562733
复制相似问题