%in%突然停止逻辑响应

时间:2018-06-10 00:50:25

标签: r list match any

我有一个完整的仿制药清单,用户输入检查我的清单中是否存在这种药物(从Medline中删除)。该程序检查我的清单中是否存在该药物。问题是我检查了药物的存在:

vast<-user_comp %in% medline_comps[1]

user_comp是用户药物输入,medline_comps是药物名称列表 这总是如此。

变量&#34;浩瀚&#34;总是如此,因为例如&#34;去氧肾上腺素&#34;存在于medline_comps中。事情是我在代码中没有改变任何东西,然后突然大量开始返回FALSE,我尝试重新启动R,清除工作区中的每个对象而没有任何更改%in%开始返回FALSE而不是TRUE。我仔细检查了列表中药物的存在情况,我甚至将药物粘贴在列表中并将其放入用户输入中,并且在过去返回TRUE时仍然返回FALSE。

当你没有改变代码中的任何内容时,R有什么特别的原因可以给你不同的结果吗?

我的清单的一个例子是:

medline_comps[1]

[[1]]
[1] "Phenylephrine"               "Pyrethrin and Piperonyl Butoxide Topical"              
[3] "Antipyrine-Benzocaine Otic"  "Hydrocortisone  

因此,如果我输入去氧肾上腺素,那么绝对应该像以前一样真实,但现在只返回FALSE,对此有任何合理的解释吗?

1 个答案:

答案 0 :(得分:1)

尝试user_comp %in% medline_comps[[1]](请注意双括号)。

您的输出表明这里发生了什么:

medline_comps[1]
# [[1]] 
# [1] "Phenylephrine" "Pyrethrin and Piperonyl Butoxide Topical" 
# [3] "Antipyrine-Benzocaine Otic" "Hydrocortisone

单个括号返回一个列表,而您想测试列表中包含的向量中是否存在项目,在这种情况下,您将使用双括号。参见例如The difference between [] and [[]] notations for accessing the elements of a list or dataframe