) 82. 字符后的数字范围

问题描述 投票:0回答:1

我的列名是这样的。

colnames <- c("a81", "b82", "a181", "b182")

我想只提取列名末尾有81或82的列,在这些数字(81和82)前应该有一个字母。我想使用regex在 grepl 而这里的预期输出是

TRUE TRUE FALSE FALSE

我目前尝试的是

grepl("[:alpha:][81-82]$", colnames)

不幸的是,该代码返回 FALSE 对于所有的条目。我到底做错了什么?

r regex grepl
1个回答
2
投票

[:alpha:] 需要改成 [[:alpha:]] 而不是 [81-82]它可以是 8 其次 [1-2]

grepl("^[[:alpha:]]8[1-2]$", colnames)
#[1]  TRUE  TRUE FALSE FALSE

或者我们可以指定

grepl("^[A-Za-z]8[1-2]$", colnames)

2
投票

我会选择

grepl("[a-z](81|82)$", colnames)

[a-z]表示任何字母,括号内为后面2个字符中的任何一个:即81或(

© www.soinside.com 2019 - 2024. All rights reserved.