私は既に登録されている薬の名前を持つテキストベクトルと、新薬の名前を持つテキストベクトルを持っています。私は、新薬がすでに存在する薬物のように見えるかどうかを知りたい。サプリで重複する名前を変更しないでください。
たとえば、firm1またはfirm2のいずれかで生産可能な薬物であり、supercure firm1 1000mg
およびsupercure firm2 500mg
が既に登録されている薬物である場合は、supercure firm1 500 mg
を両方とも関連付ける必要があります。
agrep
はRで、このようなマッチングを行うことができます、とsapply
は、新しいリスト内のすべての薬のためにそれを行うことができます:
new<-c("supercure firm1 500mg","randomcure firm2 1000mg","unknowncure firm2 100mg")
registered<-c("supercure firm1 1000mg","supercure firm2 500mg","randomcure firm1 1000mg")
res<-unlist(sapply(new,agrep,x=registered))
res
予想したように、supercureは(2試合、randomcure 1試合を取得し、一致をunknowncureありませんそれは私が望むものです)。ただし、重複がないようにsapply
には名前が変更されているように表示されます。
:それは、新しいリストからマッチした薬を選択するために、私を防ぐため、これは問題がある
supercure firm1 500mg1 supercure firm1 500mg2 randomcure firm2 1000mg
1 2 3
:supercure firm1 500mg
はsupercure firm1 500mg1
とsupercure firm1 500mg2
になりましたnew[new %in% names(res)]
はrandomcureを捕まえます(supercureの名前が変更されているため)。
私はこれを非常に無慈悲なテキスト処理で修正する方法を考えることはできますが、マッチした新薬のリストを得るもっと巧妙な方法がありますか?
理想的な出力は次のようになります。
supercure firm1 500mg supercure firm1 500mg randomcure firm2 1000mg
1 2 3
確かに、私の悪い。ここでニースのソリューション! – Vincent