【问题标题】:How to write OR condition inside which in R如何在 R 中写入 OR 条件
【发布时间】:2017-01-06 14:07:38
【问题描述】:

我无法弄清楚如何在 R 中的 which 中编写 or condition。 这个statemnet不起作用。

   which(value>100 | value<=200)

我知道这是非常基本的事情,但我无法找到正确的解决方案。

【问题讨论】:

  • 欢迎来到 SO。你可以改进你的问题。请阅读how to provide minimal reproducible examples in R。然后相应地编辑和改进它。一个好的帖子通常提供最少的输入数据,所需的输出数据和代码尝试包括。他们以什么方式失败了。

标签: r


【解决方案1】:

每个值都大于 100 或小于或等于 200。也许您需要其他数字或 &amp; 而不是 |?否则,该语句没有问题,语法正确:

> value <- c(110, 2, 3, 4, 120)
> which(value>100 | value<=200)
[1] 1 2 3 4 5
> which(value>100 | value<=2)
[1] 1 2 5
> which(value>100 & value<=200)
[1] 1 5 

【讨论】:

    【解决方案2】:
    > which(iris$Species == "setosa" | iris$Species == "virginica")
    
     [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18
     [19]  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36
     [37]  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54
     [55]  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72
     [73]  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
     [91]  91  92  93  94  95  96  97  98  99 100
    

    确实有效。记住要完全限定您选择的变量的名称,如手头示例中的iris$Species(而不仅仅是Species)。

    查看文档here

    还请注意,您对which 所做的任何事情通常都可以以更快更好的方式完成。

    【讨论】:

    • 我看过文档,你们这些人“还请注意,无论您做什么,通常都可以以更快更好的方式完成。”你知道更快的方法吗?
    • 我想知道您为什么建议不要使用which。通常更快的方法对我来说并不重要,但我喜欢“更好”。为什么要避免它的任何提示?
    • 如果你只是想得到真值,那么which是唯一的方法。如果您想将其用于子集(大多数情况下),那么像 data.tabledplyr 这样的包具有更快且对用户更友好的语法。
    • 感谢您的澄清。实际上,which 对于子集化不是必需的。即使没有data.tabledplyr。我只是没有做出假设,它通常用于此。
    • 您能与 dplyr 或 data.table 分享您的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多