我在使用 !!!(切片运算符 / 大感叹号运算符)来调用 ggplot2::geom_point() 函数,但却失败了。能否有人指出这段代码哪里出错了?以下代码试图从字符向量中执行 ggplot2 函数。
library(rlang)
library(ggplot2)
data(mtcars)
data = mtcars
assoc = c( "cyl" , "hp" )
names(assoc) = c("x", "y")
assoc_lang = rlang::parse_exprs(assoc)
gg = ggplot2::ggplot(data, ggplot2::aes( ,, !!! assoc_lang )) # This works
params = c( "10", "\"black\"" )
names(params) = c("size", "colour" )
params_lang = rlang::parse_exprs(params)
gg = gg + ggplot2::geom_point( !!! params_lang ) # This fails
plot(gg)
- 输出
Error in !params_lang : invalid argument type
Calls: <Anonymous> -> layer
Execution halted
(注意) 下面的代码是一个交互式等效代码,它展示了我想在上面的代码中做的事情。
library(ggplot2)
data(mtcars)
data = mtcars
gg = ggplot2::ggplot(data, ggplot2::aes( x = cyl , y = hp ))
gg = gg + ggplot2::geom_point( size = 10, colour = "black")
plot(gg)