将变量作为if语句或过滤器的条件传递

时间:2018-02-05 05:09:07

标签: r if-statement filter dplyr conditional

我很想知道如何在R中实现以下内容。

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

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

具体来说,是否有人知道是否可以使用dplyr过滤功能执行此类操作? (再次,psudo-code):

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

2 个答案:

答案 0 :(得分:1)

一种选择是将evalparse

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

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

答案 1 :(得分:1)

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

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

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