私はそうのように、私は一致したい長さの異なる2つの文字のベクトルを持つ2つのデータフレーム、持っている:私は要素を含むベクトルを返し、company.aにcompany.bを比較したいと思いますサブセットは、levenshtein距離を含むためにgrepを使用していますか?
company.a <- c("heinz", "hawkings mcgill", "heinz ketchup", "heinz vinegars", "davis and smith", "dell computers", "dell", "O organics", "organics")
company.b <- c("heinz", "hawkings-mcgill", "oyster bay", "company x", "dell")
をcompany.aにマッチしたcompany.bから。私はしかし、私がリターンで取得することは論理的でなければならない「サブセット」を示すエラーです
に大きなフレームのサブセットには、次のコードを使用してmatch.comp <- subset(company.a, grep(paste(company.b, collapse = "|"), company.a, value = TRUE)).
を試してみました。次の結果が欲しいです:
match <- c("heinz", "hawkings mcgill", "heinz", "heinz", "FALSE", "dell", "dell", FALSE, FALSE)
エラーが発生した場合、明らかに私はgrepまたはサブセットについて何か不足しています。私は2つの質問があります:
これを行うにはgrepが最適ですか?それとも別の方法がありますか?私は(A%in%B)アプローチを使って正確に一致することを知っていますが、文字列が完全に一致するとは保証できません。
Grepは最初の試合を返しますが、例えばlevenshtein distanceで考えられた可能性のある試合をすべて抽出する方法がありますか?私はutilsパッケージ内のadist機能を認識していますが、grepと組み合わせることができるかどうかを知りたいのです。
何か助けやアドバイスをいただければ幸いです。ありがとう。
'agrep'で得ることができますか?あなたの望む出力は不明です。 – alistaire
@alistaireありがとう。 agrepはよさそうだ。私が望むのは、一致する要素が動作すればそれを返し、そうでなければ論理値を返すことです。これはもっと明確ですか? – jvalenti