2016-10-21 18 views
2

%in%演算子の大文字と小文字の区別を制御する方法はありますか?私の場合、私はそれは関係なく、入力の場合はtrueを返しませんしたい:r%in%演算子|コントロールケースの感度

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

は、しかし、私の実際のアプリケーションでは、私はまた、左とチェックの文字列のリストを使用しています、再現性の例として、このコードを考えてみましょうstringListからの単語の存在のために。

+0

、[ここ](http://stackoverflow.com/questions/8361589/turning-off-case-sensitivity-in-r)および[ここ](http://stackoverflow.com/参照質問/ 27085620/which-in-case-in-case-insensitive )。 – zx8754

+0

ええと、なぜこれが重複しているのかわかりませんが、リンクした投稿には潜在的な回避策が含まれています。 – florian

+0

リンクされたポストは異なる機能を使用しているが、 '%in% 'を使用しているので100%重複しているわけではありませんが、回答を確認してください、同じgrepl with ignore caseとtolowerまたはtoupper大文字と小文字を区別しません。 – zx8754

答えて

3

使用grepl代わりに、それはignore.caseパラメータを持っているよう:

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

最初の引数は正規表現なので、それはあなたに多くの柔軟性を与え、しかし、あなたが選ぶ避けるために^で始まり、$で終了する必要がサブ文字列を作成する。あなたが正規表現を避けたい場合は

+0

ありがとうジェームズ、 また、文字列のリスト? – florian

+0

@florian正規表現 'or 'にor演算子を使うことができます。しかし、それは複数の文字列をどのように扱うかによって異なります。 – James

2

ジェームズの答え@に加えて、あなたもtolowerを使用することができます。

tolower("HeLLo") %in% stringlist 

左サイドでも文字ベクトルであるならば、我々は両側、例えばtolowerを行います。また

x <- c("Hello", "helLo", "hello", "below") 
stringList <- c("heLlo", "world") 
tolower(x) %in% tolower(stringList) 
# [1] TRUE TRUE TRUE FALSE 
+0

しかし 'stringList'の' 'Hello" 'ならば? –

+0

これは読者の練習として残されています。 –

+0

えええええええええええええええええええええええええええ投稿日時: – florian