我想从字符串创建一个对象,以与公式的元素进行比较。
例如,在以下内容中:
# note that f does not exist
myForm <- y ~ f(x)
theF <- myForm[[3]]
fString <- "f(x)"
如何将fString
与theF
进行比较?
如果我知道字符串是“f(x)”,我可以手动输入以下内容
cheating <- as.call(quote(f(x)))
identical(theF, cheating)
有效(它给出TRUE)但我希望能够将字符串“f(x)”作为参数(例如,它可能是“g(x)”。
这个问题的真正意义在于让我更好地理解如何使用调用对象和quote
函数。
答案 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以获得示例实现