首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择以相同模式开头的多列

选择以相同模式开头的多列
EN

Stack Overflow用户
提问于 2021-07-28 14:57:26
回答 2查看 231关注 0票数 1

我有数据帧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)")

但不起作用。我使用这个正则表达式是很新的。

我怎么能做到呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-28 16:45:02

我们可以使用regex来匹配从字符串的开头(^)开始的'q‘,后面跟着[]中的值的范围( 6-9 ),或者(|),后面跟着字符串末尾的[0-1]范围($)。

代码语言:javascript
运行
复制
library(dplyr)
df %>%
    select(matches('^q([6-9]|1[0-1])$'))

-output

代码语言:javascript
运行
复制
          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

数据

代码语言:javascript
运行
复制
set.seed(24)
df <- as.data.frame(matrix(rnorm(12 *4), ncol = 12, 
    dimnames = list(NULL, paste0("q", 1:12))))
票数 0
EN

Stack Overflow用户

发布于 2021-07-28 15:08:12

代码语言:javascript
运行
复制
df %>% select(starts_with(paste("q",6:11, sep = "")))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68562733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档