r - 使用正则表达式选择多列

标签 r regex select

我有一些名称为r1a r3c r5e r7g r9i r11k r13g r15i等的变量。我正在尝试选择r5 - r12<开头的变量 并在 R 中创建一个数据框。

我可以编写完成此任务的最佳代码是,

data %>% select(grep("r[5-9][^0-9]" , names(data), value = TRUE ),
grep("r1[0-2]", names(data), value = TRUE))

鉴于我一天的正则表达式经验,我想知道是否有人可以帮助我为此编写更好、更紧凑的代码!

最佳答案

这是一次获取所有列的正则表达式:

data %>% select(grep("r([5-9]|1[0-2])", names(data), value = TRUE))

竖线代表“或”。

正如评论所指出的,这对于诸如 r51 之类的项目来说会失败,并且也可以缩短。相反,您将需要一个稍长的正则表达式:

data %>% select(matches("r([5-9]|1[0-2])([^0-9]|$)"))

关于r - 使用正则表达式选择多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48776515/

相关文章:

r - 如何解决此错误 : attempt to set 'rownames' on an object with no dimensions

恢复Rcpp源文件

r - 如何返回 R 中两个 data.frames 之间匹配行的索引

php - 最多匹配 x 正则表达式或 y 正则表达式

ruby-on-rails - 如何添加onchange事件以选择Rails中的标签

RStudio 在读取 mzML 文件时崩溃,R 终端没有

javascript - 从对象属性中删除双引号,除非以数字开头

javascript - 正则表达式匹配字符和字母

Mysql - 按列选择最高值

MySql 选择包含空值的字段