在对 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"
Have read this post already,我仍然怀疑我的解决方案就在那里。
我想通过将变量名粘贴在一起来引用变量名。在这种情况下,ggplot::scale_x_continuous()
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"