rlang-创建带有卷曲的字符串,稍后进行计算
我试图创建一个字符串,其中包括“curly-curly”括号和用户基于的对象。然后,我将在ggplot命令中解析和计算这个表达式rlang-创建带有卷曲的字符串,稍后进行计算,r,tidyverse,rlang,R,Tidyverse,Rlang,我试图创建一个字符串,其中包括“curly-curly”括号和用户基于的对象。然后,我将在ggplot命令中解析和计算这个表达式 test_func <- function(df, x_var, y_var, color_by){ color_aes <- ifelse(!missing(color_by), glue::glue("aes(color = {{{color_by}}})"), "&q
test_func <- function(df, x_var, y_var, color_by){
color_aes <- ifelse(!missing(color_by),
glue::glue("aes(color = {{{color_by}}})"), "") %>%
rlang::expr()
df %>%
ggplot(aes(x = {{x_var}}, y = {{y_var}})) +
geom_point(rlang::eval_tidy(rlang::parse_expr(color_aes)))
}
test_func(mtcars, cyl, disp)
test_func(mtcars, cyl, disp, carb)
测试函数%
ggplot(aes(x={{x_var}},y={{{y_var}}))+
几何点(rlang::eval_tidy(rlang::parse_expr(color_aes)))
}
测试功能(mtcars、cyl、disp)
测试功能(mtcars、气缸、显示、carb)
两个问题:
- 当第一次调用curly-curly时,是否可以使用curly-curly创建一个字符串而不对其求值
- 如何将空字符串传递给
rlang::parse_expr()
谢谢我不建议在这种情况下使用字符串。您应该能够更轻松地使用
aes()
对象。比如说
test_func <- function(df, x_var, y_var, color_by){
color_aes <- if(!missing(color_by))
aes(color = {{color_by}}) else aes()
df %>%
ggplot(aes(x = {{x_var}}, y = {{y_var}})) +
geom_point(color_aes)
}
测试功能