r%in%operator |控制案例敏感性

时间:2016-10-21 10:45:42

标签: r operators case-sensitive case-insensitive

有没有办法控制%in%运算符的区分大小写?在我的情况下,无论输入的情况如何,我希望它返回true:

stringList <- c("hello", "world")
"Hello" %in% stringList
"helLo" %in% stringList
"hello" %in% stringList

将此代码视为可重现的示例,但在我的实际应用程序中,我还使用左侧的字符串列表并检查stringList中是否存在单词。

2 个答案:

答案 0 :(得分:3)

使用grepl,因为它有ignore.case参数:

grepl("^HeLLo$",stringList,ignore.case=TRUE)
[1]  TRUE FALSE

第一个参数是正则表达式,因此它为您提供了更大的灵活性,但您必须从^开始并以$结束以避免拾取子字符串。

答案 1 :(得分:2)

除了@ 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