我的问题:我被要求比较农药清单,这些清单可以是100到500种化合物长度。我没有导入和传播它们的问题但是,如果名称不匹配,则列不对齐。命名是农药世界的创造性运动。硫丹或Endosulphan。 op-DDT或DDT(o,p)。
我的观点是,如果我在Excel中创建了一个字典,其中第一列保留了首选名称(pref),而右列保留了替代品(最多五个),我可以通过农药列表来标准化命名之前传播它然后进行对齐。
我尝试创建一个替代字符串,省略空字段,然后使用sub进行替换。
例如,我将首选名称设为
pref <- "HCH-gamma (Lindane)"
和一串替代品
check_list <- "BHC-gamma (Lindane)|BHC - gamma (Lindane)|Lindane"
然后使用
运行一个名为df的循环Combined$Name[i] <- sub(check_list, pref, Combined$Name[i])
最开始的 名称&lt; -c(&#34; HCH-γ(林丹)&#34;,&#34; BHC-γ(林丹)&#34;,&#34; BHC-γ(林丹)&#34; &#34;林丹&#34)
最终应该是
名称&lt; - c(&#34; HCH-gamma(林丹)&#34;,&#34; HCH-gamma(林丹)&#34;,&#34; HCH-gamma(林丹)& #34;,&#34; HCH-gamma(林丹&#34;))
但没有。结果很奇怪,例如
"BHC - gamma (HCH-gamma (Lindane))";
显然我没有正确的语法,但这是我第一次尝试这样的字符串操作,无法理解我做错了什么。任何指导将不胜感激。或者有更好的方法吗?
答案 0 :(得分:0)
感谢apom。
ifelse(grepl(searchTerm, myVector), newTerm, myVector)