将字符类型转换为逻辑

时间:2012-07-23 14:24:14

标签: r

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

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

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

这显然会返回一个错误,该参数不能被解释为逻辑错误,因为它将x视为字符串“a&gt; 2”。

我知道我可以做到:

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

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

我的问题:是否有一些我可以放x的函数允许R不是作为一个字符来查看它,而是作为一个逻辑语句?换句话说,我怎样才能删除引号,以便逻辑语句可以在if语句中工作?

1 个答案:

答案 0 :(得分:11)

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

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

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

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

这里是龙

例如见: