创建调用对象以与公式元素进行比较

时间:2014-05-30 13:08:16

标签: r

我想从字符串创建一个对象,以与公式的元素进行比较。

例如,在以下内容中:

# note that f does not exist
myForm <- y ~ f(x)
theF <- myForm[[3]]
fString <- "f(x)"

如何将fStringtheF进行比较?

如果我知道字符串是“f(x)”,我可以手动输入以下内容

cheating <- as.call(quote(f(x)))
identical(theF, cheating)

有效(它给出TRUE)但我希望能够将字符串“f(x)”作为参数(例如,它可能是“g(x)”。

这个问题的真正意义在于让我更好地理解如何使用调用对象和quote函数。

2 个答案:

答案 0 :(得分:1)

parse(text = s)将文本s转换为表达式,e[[1]]从长度为1的表达式e中提取调用对象。 theF是一个调用对象,因此将这些放在一起我们有:

 identical(theF, parse(text = fString)[[1]])
 ## TRUE

答案 1 :(得分:0)

请注意,在R中,公式本身并不算什么。 他们唯一做的就是将它转换为像对象一样的字符串...... “Y〜F(X)”

然后是接受公式来解释它的函数... 检查coplot以获得示例实现