use_labels
не очень подходит для использования внутри циклов. Но если я правильно понимаю, что вам нужно:
library(ggplot2)
library(cbsodataR)
library(plotly)
library(sjlabelled)
library(expss)
library(tidyr)
library(tidyverse)
library(dplyr)
library(stringr)
##Get data from dutch public data for one specific area
bevolking <- cbs_get_data("70072NED",
RegioS = "GM0736")
#Create other values for variable $Perioden
bevolking$Perioden <- 1995:2020
#Only show data as from 2011
bevolking <- bevolking %>%
filter(bevolking$Perioden>=2011)
#Select variables from dataset
bevolking <- bevolking %>%
select(c("Perioden", "Mannen_2", "Vrouwen_3"))
var_lab(bevolking$Perioden) = "Perioden"
#Create for loop function
plots <- list()
for(nm in names(bevolking)) {
plots[[nm]] <- use_labels(bevolking, ggplot(..data, aes_string(y = var_lab(bevolking[[nm]]), x = Perioden)) +
geom_line(color = "#10A593", size = 1) +
theme_bw() +
theme(panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"),
axis.title.y=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.line.y=element_blank()) +
geom_point() +
labs(title = var_lab(bevolking[[nm]]))+
scale_x_continuous("Perioden",
labels = as.character(Perioden),
breaks = Perioden)
)
}
#Display one plot as a plotly from the above function
ggplotly(plots[["Mannen_2"]], tooltip=c("y"))
ОБНОВЛЕНИЕ: «aes_string» не является идеальным, когда argumnets не являются хорошими именами переменных. Цитата из справки для aes_string
:
# You can't easily mimic these calls with aes_string
aes(`$100`, colour = "smooth")
aes_(~ `$100`, colour = "smooth")
# Ok, you can, but it requires a _lot_ of quotes
aes_string("`$100`", colour = '"smooth"')
Итак, вам нужно вставить обратные метки вокруг var_lab (...). Или лучше использовать aes_
: aes_(y = as.name(var_lab(bevolking[[nm]])), x = Perioden)