【问题标题】:Ifelse with multiple conditions in sapply functionIfelse 在 sapply 函数中有多个条件
【发布时间】:2019-06-26 12:37:27
【问题描述】:

我需要检查数据框中的两个条件的两列中的每一行(基本上,我从另一对列中的每一行中减去一对列中的每一行以获得两个特定值(其中一个是时间间隔),见代码)。预期结果是另一列,如果两个条件都满足,则为 1,否则为 0。

我试过了:

sapply(trades1, function(x) x$indicator3 <- x %>% ifelse(indicator2 - indicator == -1 & difftime(date2, date, units = "min"== 1), 1, 0))

这给了我

 Error in ifelse(., indicator2 - indicator == -1 & difftime(date2, date,  : 
  unused argument (0) 

【问题讨论】:

  • 已经给出了一个解决方案,但仅供参考,错误是因为ifelse 需要 3 个参数。 %&gt;% 的目的是将左侧作为第一个参数分配给右侧的函数。然后,您再添加 3 个参数,总共 4 个,即比需要的多一个,这就是您收到“未使用参数”错误的原因。
  • 有没有办法在没有%&gt;%的情况下将所有列链接到x?我试过 $ 运算符,但它给了我另一个错误。

标签: r if-statement apply sapply


【解决方案1】:

假设trades1是一个data.frame`,我们可能需要

with(x, as.integer(((indicator2 - indicator) == -1) & 
     (difftime(date2, date, units = "min")== 1)))

确保difftime 大括号闭合

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多