不能在 aes_string 中使用 y 变量

Can't use a y variable in aes_string

我目前正在处理来自秘鲁的 COVID-19 数据,我想使用 Rmisc::multiplot 来显示该国每个地区阳性病例的发展情况。所以我试图编写一个循环来生成 25 个图。仅作为示例,我仅使用 4 个变量:

     Fecha    Lima     La Libertad  Madre de Dios
1 2020-04-24   10           2             1
2 2020-04-25   15           4             3
3 2020-04-26   20           8             3

我生成了一个包含区域名称的向量:

nombre_regiones <- c("Lima", "La Libertad", "Madre de Dios")

我创建了一个空列表来存储 25 个地块:

regiones <- list()

然后我使用这个 for 循环生成每个图并将其存储在列表中 "regiones":

for (w in seq_along(nombre_regiones)) { 
  nombre <- paste("r", w, sep = "")
  assign(nombre, ggplot(data = df, aes_string(x = "Fecha", y = nombre_regiones[w])) + geom_line() + geom_point() + scale_x_date(date_labels = "%d, %m", date_breaks  ="1 day") + geom_text(aes_string(label = nombre_regiones[w])))
  regiones[[w]] <- nombre
}

循环创建了 r1 并在其中存储了绘图,但是当 w = 2 时,这意味着 nombre_regiones[w] = "La Libertad" 我收到了下一个警告:

Error in parse(text = x) : <text>:1:4: unexpected symbol
1: La Libertad
       ^

因此我无法创建第二个情节,同样的事情发生在第三个区域 "Madre de Dios"。我尝试了不同的事情并查找了类似的案例,但我没有运气。 regiones[[w]] <- nombre 也不起作用,但我稍后会查找它。提前致谢。

最好发起[=13​​=]全长

regiones <- vector('list', length(nombre_regiones))

此外,aes_string 现在已弃用。相反,可以转换为 symbol 并计算 (!!)

library(ggplot2)
for (w in seq_along(nombre_regiones)) { 
      nombre <- paste0("r", w)
      assign(nombre, ggplot(data = df,
          aes(x = Fecha, y = !! rlang::sym(nombre_regiones[w]))) +   
              geom_line() + 
              geom_point() + 
              scale_x_date(date_labels = "%d, %m", date_breaks  ="1 day") +
              geom_text(aes(label = !! rlang::sym(nombre_regiones[w]))))
      regiones[[w]] <- nombre
 }

-输出r2

-输出r3

数据

df <- structure(list(Fecha = structure(c(18376, 18377, 18378), class = "Date"), 
    Lima = c(10L, 15L, 20L), `La Libertad` = c(2L, 4L, 8L), `Madre de Dios` = c(1L, 
    3L, 3L)), row.names = c("1", "2", "3"), class = "data.frame")