12

我正在尝试创建一些对不熟悉 R 的人来说非常用户友好的代码。代码的设计使得可以根据用户正在寻找的内容轻松操纵逻辑标准。因此,与其强迫用户在 if 语句中工作,我只想在代码顶部创建一个包含逻辑语句的字符变量(即x <- "a > 2")。

然后我想使用包含逻辑运算符的字符变量来评估 if 语句。这是基本思想:

a <- 3
x <- "a > 2"
if(x)TRUE

这显然会返回参数不可解释为逻辑的错误,因为它将 x 视为字符串“a > 2”。

我知道我可以简单地做:

a <- 3
x <- as.logical(a > 2)
if(x)TRUE

但是,就我正在处理的事情而言,最好将这些逻辑语句最初存储为字符。而且 as.logical() 似乎无法转换字符(即as.logical("a > 2"))不起作用。

我的问题:是否有一些函数可以让 x 让 R 不将其视为一个字符,而是将其视为一个逻辑语句?换句话说,我怎样才能去掉引号,以便逻辑语句可以在 if 语句中工作?

4

1 回答 1

11

您可以使用eval(parse(...)).

a <- 3
x <- "a > 2"

eval(parse(text=x))
[1] TRUE

x2 <- "a==3"
eval(parse(text=x))
[1] TRUE

这里是龙

参见,例如:

于 2012-07-23T14:30:58.670 回答