【问题标题】:Using if/ifelse statement with vector conditions in R在 R 中使用带有向量条件的 if/ifelse 语句
【发布时间】:2017-10-11 04:25:58
【问题描述】:

我试图寻找这个问题的答案,但我不确定我是否在搜索栏中正确地问了这个问题,所以就这样吧。我想创建一个基于两个向量的带有逻辑条件的 if 或 ifelse 语句。

这是代码的简化版本:

ifelse(Vector1 == c(T,T,T),"Combo1","Combo2")

我创建了一个名为“Vector1”的向量。它的值当前是 [T T F]。因此,在上述情况下,我希望打印“Combo2”的输出值。相反,我得到了 [Combo1 Combo1 Combo2] 的向量。所以我看到它正在将这些值传递给一个向量,但我希望 ifelse 语句传递一个 TRUE 或 FALSE 值来获得一个“Combo”值。

[T/F T/F T/F] 有 8 种组合,所以我尝试将其中几个 ifelse 语句嵌套在一起,但我想我会从简单开始。

我也尝试过使用 if 语句,但这似乎对我也不起作用。

感谢您的帮助。

【问题讨论】:

  • 来自?ifelse:“返回一个与测试形状相同的值”。这就是为什么您会返回一个与 Vector1 具有相同形状的向量。
  • 除了'test'是一个逻辑向量。所以它与Vector1 的形状不同......它与Vector1 == c(T,T,T)#[1] TRUE TRUE FALSE 的“形状”相同。 (诚​​然,每个为真的逻辑向量的测试将是向量本身,但“测试”对象不是 jsut Vector1,而是来自 == 运算符的结果。

标签: r if-statement vector


【解决方案1】:

你也可以做一个普通的 if 语句,因为它返回一个值:

my_result = if(all(Vector1 == c(T,T,T))) {"Combo1"} else {"Combo2"}

ifelse 函数用于向量化条件语句。

通过使用标准 if 语句,您可以消除潜在的歧义/误解,因为标准 if 仅评估一个条件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2017-10-15
    • 2020-10-31
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多