【问题标题】:Pass variable as condition for if-statement or filter [duplicate]传递变量作为 if 语句或过滤器的条件 [重复]
【发布时间】:2018-02-05 05:09:07
【问题描述】:

我很想知道如何在 R 中实现以下目标。

我希望这个 psodu 代码能说明这个概念。

g <- 10
condition <- "g > 9"
if(condition) print("This works")

具体来说,有谁知道是否可以使用 dplyr 过滤器功能做这样的事情? (再次,伪代码):

df <- data.frame(one = 1:5, two = 6:10, three = 11:15)
condition <- "two == 7 | one == 1"
filter(df, condition)

【问题讨论】:

    标签: r if-statement filter dplyr conditional


    【解决方案1】:

    另一种选择是将您的字符串设置为expression

    g <- 10
    condition <- expression(g > 9)
    if (eval(condition)) print("This works")
    # [1] "This works"
    

    这就是 Tim 解决方案中的 parse 函数正在做的事情,在大多数情况下,这是一个比这个更通用的解决方案。

    【讨论】:

    • 凯文和蒂姆,谢谢你们的回复。我将 Kevin 标记为正确,因为它需要的命令更少。不过两者都很干净。
    【解决方案2】:

    一种选择是使用evalparse

    g <- 10
    exp <- "g > 9"
    eval(parse(text=exp))
    [1] TRUE
    

    这种方法应该适用于更复杂的表达式,包括那些进行函数调用的表达式。

    【讨论】:

      猜你喜欢
      • 2015-10-06
      • 2022-11-20
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多