【发布时间】:2022-01-09 02:35:30
【问题描述】:
我正在使用!!! (拼接运算符/大爆炸运算符)用于 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)
【问题讨论】:
-
为了便于搜索,该运算符的正式名称现在为splice operator。