2017-06-30 8 views
1

小さなデータフレーム:dplyrフィルタ::ネストされた関数とwhich_misspelt OR dplyrフィルタ

words <- data.frame(terms = c("qhick brown fox", 
      "tom dick harry", 
      "cats dgs")) 

私はqdap::which_misspelledを使用している場合、私はmissspelled言葉を見つけることができます。

> which_misspelled(words) 
     1  8 
"qhick" "dgs" 

しかし、私スペルを含む行の単語dfをサブセット化することです。上の例では、どの行に関係なく、私のdfで提供されるすべての単語を参照するインデックス1と8を返します。

スペルミスのある単語が含まれている行に基づいて自分のdfをサブセット化するにはどうすればよいですか?

(ボーナスdplyrフィルタで行うことができる場合)

答えて

4

方法だけでベクトル化されcheck_spelling、その結果を使用については、あなたがデータフレームサブセットに使用できる行番号の列に含まれています

library(qdap) 
words[check_spelling(words$terms)$row,,drop=F] 

#   terms 
#1 qhick brown fox 
#3  cats dgs 

which_misspelled機能ではなく、データフレームの単一の文字列をチェックするためのものと思われる:

which_misspelled - 文字列のスペルを確認します。

+0

ありがとうございます。 drop = Fは何をするのですか?私はそれを残しておけば、それを返すことを知っています。[1] qhick brown fox cats dgs レベル:cats dgs qhick brown fox tom dick harry'しかし、ここで何が起こっていますか? –

+1

'drop = F'は、気づいたようにデータフレームとして結果を保持するために使用されます。データフレームをサブセット化し、その結果に1つの列しか含まれていない場合は、便宜上、デフォルトでベクターになるという動作があります。したがって、データフレームとして保持したい場合は、 'drop = FALSE'を使用してください。 – Psidom

関連する問題