如何在R中将字符串转换为具有`language`类型的公式?

时间:2018-09-28 22:07:27

标签: r

我想将带有公式的字符串转换为类型language的对象,以便将其用作公式。

我该如何完成?

一个简短的示例,显示了问题所在:

formula <- "(1 - sin(x^3)"
> typeof(formula)
[1] "character"

有效参考是

> typeof(quote(1 - sin(x^3)))
[1] "language"

当然,我不能只用引号写公式:

> quote(formula)
formula

那么,有没有办法将向量中的字符串转换为language类型的东西?

1 个答案:

答案 0 :(得分:3)

使用parse

y <- "1 - sin(x^3)"
p <- parse(text = y)[[1]]

p
## 1 - sin(x^3)

is.language(p)
## [1] TRUE

typeof(p)
## [1] "language"

x <- pi/4
eval(p)
## [1] 0.5342579

请注意,is.language(parse(text = y))也为TRUE,但类型为expression。另一方面,eval(parse(text = y))给出相同的结果。