我有一个完整的仿制药清单,用户输入检查我的清单中是否存在这种药物(从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,对此有任何合理的解释吗?
答案 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