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”和 tolowertoupper 函数使其不区分大小写。 是的,但我想继续使用 %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% 运算符 |控制大小写敏感性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在运行时与 VB.NET LIKE 运算符进行大小写(不)敏感比较(无选项比较)

身份运算符/流程控制if

R语言数据对象与运算

条件查询

是否有 C# 不区分大小写的等于运算符?

Hive--05---DML----查询基本语法