为什么在使用grepl(".*", LETTERS, fixed=T)时,grepl没有返回true?

3
我期望这段代码返回一个长度为26的逻辑向量,其中所有元素都是TRUE,但实际上却返回了全是FALSE的向量。
grepl(".*", LETTERS, fixed=T)

从文件说明中得知,“grepl返回一个逻辑向量(对于x的每个元素,匹配或不匹配)”。因为“.*”是任何东西的匹配,所以不应该它将每个字母都匹配,返回所有TRUE吗?请告诉我我错了什么。

.匹配的不仅是字母,它可以匹配在TRE正则表达式中的任何字符。 - Wiktor Stribiżew
@WiktorStribiżew 我知道,但是考虑到它匹配字母,难道不应该匹配吗? - Holly
你寻找的是 .*,而不是任何字符。 - Wiktor Stribiżew
请查看此PDF - Christoph
1个回答

3

我们需要移除 fixed = TRUE

grepl(".*", LETTERS)

如果设置 fixed = TRUE,则意味着 .* 是字符串中实际的字符。然而,在 LETTERS 中我们没有任何 .*。这些是元字符,意味着 .(任意字符)和 *(0个或多个字符)。


好的,fixed是指忽略所有的正则表达式符号吗?在查看其他问题后,我并没有这样理解。我已经阅读了帮助文件。 - Holly
@Holly fixed = TRUE 匹配字面字符,例如 grepl(".*", c(".*T", ".F*"), fixed = TRUE),第一个返回TRUE,第二个返回FALSE,因为在第一个情况下 * 跟随 .,而在第二个情况下不是。 - akrun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接