【问题标题】:%in% suddenly stopped logically responding%in% 突然停止逻辑响应
【发布时间】:2018-06-10 00:50:24
【问题描述】:

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

vast<-user_comp %in% medline_comps[1]

user_comp 是用户药物输入,medline_comps 是药物名称列表 这始终是正确的。

并且变量“vast”始终为真,因为例如 medline_comps 中存在“Phenylephrine”。问题是我没有更改代码中的任何内容并且突然开始返回 FALSE,我尝试重新启动 R,从工作区清除每个对象并且没有任何更改 %in% 开始返回 FALSE 而不是 TRUE。我仔细检查了列表中药物的存在,我什至复制粘贴了列表中的药物并将其放入用户输入中,并且在过去返回 TRUE 时仍然返回 FALSE。

当您没有更改代码中的任何内容时,R 会给您不同的结果是否有特殊原因?

我的清单的一个例子是:

medline_comps[1]

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

所以如果我输入 Phenylephrine,巨大的应该像以前一样定义为 TRUE,但现在只返回 FALSE,对此有什么合乎逻辑的解释吗?

【问题讨论】:

  • 试试user_comp %in% medline_comps[[1]](注意双括号)。
  • 它返回 TRUE,所以我确实以某种方式更改了代码。这是我访问列表的方式,谢谢。

标签: r list match any


【解决方案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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多