Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rlang-创建带有卷曲的字符串,稍后进行计算_R_Tidyverse_Rlang - Fatal编程技术网

rlang-创建带有卷曲的字符串,稍后进行计算

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

我试图创建一个字符串,其中包括“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}}})"),  "") %>% 
     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)
}
测试功能