r %in% 运算符 |控制大小写敏感性[重复]
Posted
技术标签:
【中文标题】r %in% 运算符 |控制大小写敏感性[重复]【英文标题】:r %in% operator | control case sensitivity [duplicate] 【发布时间】:2017-03-03 15:28:08 【问题描述】:有没有办法控制 %in% 运算符的区分大小写?就我而言,无论输入的情况如何,我都希望它返回 true:
stringList <- c("hello", "world")
"Hello" %in% stringList
"helLo" %in% stringList
"hello" %in% stringList
将此代码视为可重现的示例,但在我的实际应用程序中,我还在左侧使用字符串列表并检查字符串列表中是否存在单词。
【问题讨论】:
另见here和here。 嗯,我不明白为什么这是重复的,但是您链接的帖子包含潜在的解决方法。 它不是 100% 重复的,因为我们使用%in%
而链接的帖子使用不同的功能,但检查答案,他们使用相同的“grepl with ignore case”和 tolower
或toupper
函数使其不区分大小写。
是的,但我想继续使用 %in%,也许有人可以作为一个很好的解决方案。目前我正在考虑将双方转换为小写/大写
【参考方案1】:
除了@James的回答,如果你想避免正则表达式,你也可以使用tolower
:
tolower("HeLLo") %in% stringlist
如果左边也是一个字符向量那么我们让两边都降低,例如:
x <- c("Hello", "helLo", "hello", "below")
stringList <- c("heLlo", "world")
tolower(x) %in% tolower(stringList)
# [1] TRUE TRUE TRUE FALSE
【讨论】:
但是如果"Hello"
在 stringList
中呢?
留给读者作为练习。
嗯,谢谢,我会考虑在两边都使用 tolower【参考方案2】:
改用grepl
,因为它有一个ignore.case
参数:
grepl("^HeLLo$",stringList,ignore.case=TRUE)
[1] TRUE FALSE
第一个参数是一个正则表达式,所以它给你更大的灵活性,但你必须以^
开头并以$
结尾以避免拾取子字符串。
【讨论】:
谢谢James,如果左边的输入也是字符串列表呢? @florian 您可以将 or 运算符用于正则表达式,|
。但这取决于您要如何处理多个字符串。以上是关于r %in% 运算符 |控制大小写敏感性[重复]的主要内容,如果未能解决你的问题,请参考以下文章