在对 ggplot 的调用中通过 paste0() 引用变量

Refer to a variable via paste0() within a call to ggplot

Have read this post already,我仍然怀疑我的解决方案就在那里。

我想通过将变量名粘贴在一起来引用变量名。在这种情况下,ggplot::scale_x_continuous()

的 breaks 参数
dput(breaks_7)
c("-3\n[=10=]", "-2\n", "-1\n", "0\n", "1\n", "2\n8", 
"3\n1", "-3\n[=10=]", "-2\n", "-1\n", "0\n", "1\n", 
"2\n8", "3\n3", "-3\n[=10=]", "-2\n", "-1\n", "0\n", 
"1\n", "2\n", "3\n9", "-3\n[=10=]", "-2\n", "-1\n", 
"0\n", "1\n", "2\n", "3\n4", "-3\n[=10=]", "-2\n", "-1\n", 
"0\n", "1\n", "2\n", "3\n7", "-3\n[=10=]", "-2\n", 
"-1\n", "0\n", "1\n", "2\n", "3\n0", "-3\n", 
"-2\n", "-1\n", "0\n", "1\n", "2\n9", "3\n8", 
"-3\n", "-2\n", "-1\n", "0\n", "1\n", "2\n5", 
"3\n7", "-3\n[=10=]", "-2\n", "-1\n", "0\n", "1\n", 
"2\n8", "3\n,023", "-3\n", "-2\n", "-1\n", "0\n", 
"1\n", "2\n7", "3\n9", "-3\n[=10=]", "-2\n[=10=]", "-1\n", 
"0\n", "1\n", "2\n5", "3\n1", "-3\n[=10=]", "-2\n", 
"-1\n", "0\n", "1\n", "2\n8", "3\n7")

breaks_7 %>% glimpse
 chr [1:84] "-3\n[=10=]" "-2\n" "-1\n" "0\n" "1\n" "2\n8" "3\n1" "-3\n[=10=]" "-2\n" "-1\n" "0\n" "1\n" "2\n8" "3\n3" "-3\n[=10=]" "-2\n" "-1\n" "0\n" "1\n" "2\n" "3\n9" "-3\n[=10=]" ...

breaks_7 是一个长度为 84 的 chr 向量。我想通过粘贴字符串 'breaks_' 和数字 7 paste0('breaks_', 7)[= 来引用 breaks_7 19=]

尝试通过 glimpse 在控制台中获得预期结果:

chr [1:84] "-3\n[=11=]" "-2\n" "-1\n" "0\n" "1\n" "2\n8" "3\n1" "-3\n[=11=]" "-2\n" "-1\n" "0\n" "1\n" "2\n8" "3\n3" "-3\n[=11=]" "-2\n" "-1\n" "0\n" "1\n" "2\n" "3\n9" "-3\n[=11=]" ...

尝试过:

!! paste0('breaks_', 7) %>% glimpse
 chr "breaks_7"
Error in !paste0("breaks_", 7) %>% glimpse : invalid argument type

尝试过:

!! rlang::sym(paste0('breaks_', 7)) %>% glimpse
 symbol breaks_7
Error in !rlang::sym(paste0("breaks_", 7)) %>% glimpse : 
  invalid argument type

尝试过:

as.symbol(paste0('breaks_', 7)) %>% glimpse
 symbol breaks_7

尝试过:

!! as.symbol(paste0('breaks_', 7)) %>% glimpse
 symbol breaks_7
Error in !as.symbol(paste0("breaks_", 7)) %>% glimpse : 
  invalid argument type

如何通过将 'breaks_' 和数字 7 粘贴在一起来瞥见 breaks_7?

需要将拟方程包裹在 rlang::expr() 中以执行构造表达式的算术运算。然后可以使用标准 eval():

评估表达式
rlang::expr(
  !! rlang::sym(paste0('breaks_', 7)) %>% glimpse    # as in the question
) %>% eval

我想你只是在寻找 get:

get(paste0("breaks_", 7))
#>  [1] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n8"   "3\n1"  
#>  [8] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n8"   "3\n3"  
#> [15] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"     "1\n"    "2\n"    "3\n9"  
#> [22] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"     "1\n"    "2\n"    "3\n4"  
#> [29] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n"    "3\n7"  
#> [36] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n"    "3\n0"  
#> [43] "-3\n"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n9"   "3\n8"  
#> [50] "-3\n"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n5"   "3\n7"  
#> [57] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n8"   "3\n,023"
#> [64] "-3\n"    "-2\n"    "-1\n"    "0\n"    "1\n"    "2\n7"   "3\n9"  
#> [71] "-3\n[=10=]"    "-2\n[=10=]"    "-1\n"    "0\n"    "1\n"    "2\n5"   "3\n1"  
#> [78] "-3\n[=10=]"    "-2\n"    "-1\n"    "0\n"     "1\n"    "2\n8"   "3\n7"