传递变量作为 if 语句或过滤器的条件
Pass variable as condition for if-statement or filter
我很想知道如何在 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)
一种选择是使用 eval
和 parse
:
g <- 10
exp <- "g > 9"
eval(parse(text=exp))
[1] TRUE
此方法应扩展到更复杂的表达式,包括进行函数调用的表达式。
另一种选择是将字符串设置为 expression
。
g <- 10
condition <- expression(g > 9)
if (eval(condition)) print("This works")
# [1] "This works"
这就是 Tim 解决方案中的 parse
函数所做的,在大多数情况下,这是比这个更通用的解决方案。
我很想知道如何在 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)
一种选择是使用 eval
和 parse
:
g <- 10
exp <- "g > 9"
eval(parse(text=exp))
[1] TRUE
此方法应扩展到更复杂的表达式,包括进行函数调用的表达式。
另一种选择是将字符串设置为 expression
。
g <- 10
condition <- expression(g > 9)
if (eval(condition)) print("This works")
# [1] "This works"
这就是 Tim 解决方案中的 parse
函数所做的,在大多数情况下,这是比这个更通用的解决方案。