像 this one 这样的问题解释了如何评估已解析的字符串,但是当
+
在字符串内部作为组合 ggplot
层的运算符时,这似乎不起作用。
例如
ggplot(data = mtcars) + eval(parse(text = "geom_point(aes(x = cyl, y = disp))"))
有效,但这不行:
ggplot(data = mtcars) +
eval(parse(text = "geom_point(aes(x = cyl, y = disp)) + theme_bw()"))
是否有另一种方法可以在
+
上下文中评估 ggplot
运算符?
根据@Axeman的见解,这里有一种方法可以做你想做的事:
p <- ggplot(data = mtcars)
eval(parse(text = "p + geom_point(aes(x = cyl, y = disp)) + theme_bw()"))
这样做的原因是 R 使用 sum 中第一个对象的类来分派到正确的方法来处理它。 在失败的原始示例中,第一个对象是
geom_point(aes(x = cyl, y = disp))
,其类与 ggplot(data = mtcars)
的类不同。