Обратитесь к переменной через paste0 () в вызове ggplot - PullRequest
0 голосов
/ 07 августа 2020

Я уже прочитал этот пост , я все еще подозреваю, что мое решение где-то там.

Я хотел бы сослаться на имя переменной, вставив имя переменной вместе. В этом случае аргумент breaks для ggplot::scale_x_continuous()

dput(breaks_7)
c("-3\n$0", "-2\n$1", "-1\n$3", "0\n$10", "1\n$33", "2\n$108", 
"3\n$351", "-3\n$0", "-2\n$1", "-1\n$4", "0\n$11", "1\n$35", 
"2\n$108", "3\n$333", "-3\n$0", "-2\n$1", "-1\n$3", "0\n$8", 
"1\n$25", "2\n$79", "3\n$249", "-3\n$0", "-2\n$1", "-1\n$3", 
"0\n$8", "1\n$25", "2\n$76", "3\n$234", "-3\n$0", "-2\n$1", "-1\n$4", 
"0\n$11", "1\n$32", "2\n$95", "3\n$277", "-3\n$0", "-2\n$1", 
"-1\n$4", "0\n$11", "1\n$31", "2\n$92", "3\n$270", "-3\n$1", 
"-2\n$2", "-1\n$6", "0\n$19", "1\n$62", "2\n$199", "3\n$638", 
"-3\n$1", "-2\n$2", "-1\n$7", "0\n$22", "1\n$70", "2\n$225", 
"3\n$727", "-3\n$0", "-2\n$2", "-1\n$6", "0\n$21", "1\n$76", 
"2\n$278", "3\n$1,023", "-3\n$1", "-2\n$2", "-1\n$6", "0\n$22", 
"1\n$75", "2\n$257", "3\n$879", "-3\n$0", "-2\n$0", "-1\n$2", 
"0\n$10", "1\n$42", "2\n$185", "3\n$811", "-3\n$0", "-2\n$1", 
"-1\n$2", "0\n$8", "1\n$34", "2\n$138", "3\n$557")

breaks_7 %>% glimpse
 chr [1:84] "-3\n$0" "-2\n$1" "-1\n$3" "0\n$10" "1\n$33" "2\n$108" "3\n$351" "-3\n$0" "-2\n$1" "-1\n$4" "0\n$11" "1\n$35" "2\n$108" "3\n$333" "-3\n$0" "-2\n$1" "-1\n$3" "0\n$8" "1\n$25" "2\n$79" "3\n$249" "-3\n$0" ...

breaks_7 является вектором chr длиной 84. Я хотел бы сослаться на breaks_7, вставив строку breaks_ с числом 7 paste0('breaks_', 7)

Попытка получить ожидаемый результат в консоли с помощью glimpse:

chr [1:84] "-3\n$0" "-2\n$1" "-1\n$3" "0\n$10" "1\n$33" "2\n$108" "3\n$351" "-3\n$0" "-2\n$1" "-1\n$4" "0\n$11" "1\n$35" "2\n$108" "3\n$333" "-3\n$0" "-2\n$1" "-1\n$3" "0\n$8" "1\n$25" "2\n$79" "3\n$249" "-3\n$0" ...

Пробовал:

!! 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?

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Думаю, вы просто ищете get:

get(paste0("breaks_", 7))
#>  [1] "-3\n$0"    "-2\n$1"    "-1\n$3"    "0\n$10"    "1\n$33"    "2\n$108"   "3\n$351"  
#>  [8] "-3\n$0"    "-2\n$1"    "-1\n$4"    "0\n$11"    "1\n$35"    "2\n$108"   "3\n$333"  
#> [15] "-3\n$0"    "-2\n$1"    "-1\n$3"    "0\n$8"     "1\n$25"    "2\n$79"    "3\n$249"  
#> [22] "-3\n$0"    "-2\n$1"    "-1\n$3"    "0\n$8"     "1\n$25"    "2\n$76"    "3\n$234"  
#> [29] "-3\n$0"    "-2\n$1"    "-1\n$4"    "0\n$11"    "1\n$32"    "2\n$95"    "3\n$277"  
#> [36] "-3\n$0"    "-2\n$1"    "-1\n$4"    "0\n$11"    "1\n$31"    "2\n$92"    "3\n$270"  
#> [43] "-3\n$1"    "-2\n$2"    "-1\n$6"    "0\n$19"    "1\n$62"    "2\n$199"   "3\n$638"  
#> [50] "-3\n$1"    "-2\n$2"    "-1\n$7"    "0\n$22"    "1\n$70"    "2\n$225"   "3\n$727"  
#> [57] "-3\n$0"    "-2\n$2"    "-1\n$6"    "0\n$21"    "1\n$76"    "2\n$278"   "3\n$1,023"
#> [64] "-3\n$1"    "-2\n$2"    "-1\n$6"    "0\n$22"    "1\n$75"    "2\n$257"   "3\n$879"  
#> [71] "-3\n$0"    "-2\n$0"    "-1\n$2"    "0\n$10"    "1\n$42"    "2\n$185"   "3\n$811"  
#> [78] "-3\n$0"    "-2\n$1"    "-1\n$2"    "0\n$8"     "1\n$34"    "2\n$138"   "3\n$557" 
1 голос
/ 07 августа 2020

Квазиквазии должны быть заключены в rlang::expr(), чтобы выполнить арифметику c, которая создает выражение. Затем выражение можно оценить с помощью стандартного eval():

rlang::expr(
  !! rlang::sym(paste0('breaks_', 7)) %>% glimpse    # as in the question
) %>% eval
...