不能在 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
现在已弃用。相反,可以转换为 sym
bol 并计算 (!!
)
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")
我目前正在处理来自秘鲁的 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
现在已弃用。相反,可以转换为 sym
bol 并计算 (!!
)
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")