我有一些名称为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/