mapplyでこの問題を解決しようとしていましたが、この作業をするためにいくつかのネストされたアプリケーションを使用する必要があります。本当の混乱。あるテーブルのキーワードが別のテーブルの文字列内にあるかどうかを確認するR
問題は次のとおりです。
データフレームには約400個のキーワードが含まれています。これらはおよそ15のカテゴリに分類されます。 データフレーム2には、文字列の説明フィールドと、データフレーム1に記載されているカテゴリにそれぞれ対応する15個の追加の列が含まれています。これには何百万行もあります。
データフレーム1からのキーワードは、キーワードが存在するカテゴリが、私はこのようになるはず欲しいデータフレームに2
フラグを設定する必要があり、データフレーム2内の文字列フィールドに存在する場合:
> #Dataframe1 df1
>> keyword category
>> cat A
>> dog A
>> pig A
>> crow B
>> pigeon B
>> hawk B
>> catfish C
>> carp C
>> ...
>>
> #Dataframe2 df2
>> description A B C ....
>> false cat 1 0 0 ....
>> smiling pig 1 0 0 ....
>> shady pigeon 0 1 0 ....
>> dogged dog 2 0 0 ....
>> sad catfish 0 0 1 ....
>> hawkward carp 0 1 1 ....
>> ....
私はこれを動作させるためにmapplyを使用しようとしましたが、失敗しました。エラー "長い引数は長さの倍数ではありません"が返されます。また、これはdf2の最初の文字列に対してのみ計算されます。私はこの段階を超えて進んだわけではありません。つまり、カテゴリフラグを取得しようとしています。
> mapply(grepl, pattern = df1$keyword, x = df2$description)
誰でも助けてもらえますか?ありがとうございます。私はRを新しくしているので、誰かがループをループして関数を適用する際の「親指のルール」について言及することもできます。あまりにも時間がかかるので、私はこれを解決するためにループを使用する余裕がありません。
ありがとう!このソリューションは同様に機能しますが、大規模なデータセットでは試していません。私は記憶の考察がどのように機能するかについて興味があります。上記の[ikop](http://stackoverflow.com/users/7760498/ikop)の回答では、暫定的に大きなリストを作成していますが、大規模なデータフレームを作成するソリューションは、多かれ少なかれメモリインテンシブ? – dmrzl
私は自分の答えを編集して、高速かつメモリ効率のよい実装を実現しました。 – Pieter
残念ながら、「mc.cores '> 1はWindowsではサポートされていません」というエラーが表示されます。回避策はありますか?あなたが正しいのですが、適用関数は大規模なデータセットでは遅すぎます。 – dmrzl