使用带有 lapply 的 ggplot 不显示 y 标签

Using ggplot with lapply does not show y labels

我有以下数据:

library(dplyr)

countries <- c('Austria',   'Belgium',  'Bulgaria', 'Croatia',  'Republic of Cyprus')
year <- rep(2009:2022, length(countries))
country <- as.data.frame(rep(countries, length(2009:2022)))
country <- country[order(country$`rep(countries, length(2009:2022))`),]
df<- cbind.data.frame(country, year)
df$year <- as.numeric(df$year)

df <- df %>%
  group_by(country) %>% 
  mutate(n_obs = 1:n())
df <- df %>% group_by(country) %>% 
  mutate(gdp = rnorm(n = 1, mean = 3000, sd = 300) + 20.64*n_obs,
         inflation = rnorm(n = 1, mean = 5, sd = 3) + 1.23*n_obs)

我想像这样一个一个地为 gdp 和 inflation 绘制线图:

ggplot(df, aes(x = year, y = inflation, color = country)) + geom_line()
ggplot(df, aes(x = year, y = gdp, color = country)) + geom_line()

然而,在实际数据中,我有很多变量需要绘制,我想知道如何使用 lapply 来实现。我尝试了以下代码:

lapply(df[,c(4,5)], function(var)
                              ggplot(data = df, aes(x = year, y = var, color = country))
       + geom_line() + labs(x = "year", y = var))

这行得通,但我无法在绘图上获取 y 变量标签。任何帮助将不胜感激。

此致

您可以使用以下代码:

lapply(names(df)[4:5], function(var)
  ggplot(data = df, aes(x = year, y = .data[[var]], color = country))
  + geom_line() + ylab(var))

输出gdp

输出inflation