如何在e_bar(echarts4r)函数中动态传递列名?

t0ybt7op  于 2023-01-28  发布在  Echarts
关注(0)|答案(1)|浏览(187)

我有一个数据框架,其中包含各大洲的年度明智的计数。下面是数据框架。

# A tibble: 4 x 4
  continent year_2020 year_2021 year_2022
  <chr>         <dbl>     <dbl>     <dbl>
1 Asia             35       177       350
2 Europe           45        47        84
3 Australia        26        46        58
4 Africa           15        20        25

这是我用来创建图表的R脚本

stack %>%
  e_charts(continent) %>%
  e_bar(year_2020) %>%
  e_bar(year_2021) %>%
  e_bar(year_2022)

图表
Bar graph
我的期望是我如何动态地传递这个列的名称。上面的数据框是样本数据集和年份列不断增加。我的想法是显示每个大洲最多3条。
我所尝试的是,有一个开始年份和结束年份,这样条形图就可以基于输入显示,而不是在e_bar函数中热编码列名。

start_year <- "2020"
end_year <- "2022"
year_val <- paste0("year_",start_year:end_year)
  
  year_val1 <- year_val[1] 
  year_val2 <- year_val[2] 
  year_val3 <- year_val[3] 

stack %>%
  e_charts(continent) %>%
  e_bar(sym(year_val1)) %>%
  e_bar(sym(year_val2)) %>%
  e_bar(sym(year_val3))

但收到以下错误
chr_as_locations()中的错误:!无法对不存在的列进行子集化。x列sym(year_val1)不存在。
需要有关如何动态传递年份列的帮助。
谢谢

fhity93d

fhity93d1#

一个选项是切换到e_bar的“下划线”版本,即e_bar_,它允许将系列名称作为字符串传递:

library(echarts4r)

stack |>
  e_charts(continent) |>
  e_bar_(year_val1) |>
  e_bar_(year_val2) |>
  e_bar_(year_val3)

数据

stack <- structure(list(continent = c("Asia", "Europe", "Australia", "Africa"), year_2020 = c(35L, 45L, 26L, 15L), year_2021 = c(
  177L, 47L,
  46L, 20L
), year_2022 = c(350L, 84L, 58L, 25L)), class = "data.frame", row.names = c(
  "1",
  "2", "3", "4"
))

相关问题