To be honest, I didn't get why you can't make a data frame from your strings before creating the plot.
This is an example of how you can make a line plot keeping NAs (but you need extra grouping variable)
suppressMessages(library(tidyverse))
suppressMessages(library(lubridate))
data_vector <- c('10-10-2018', '25-10-2018', '9-11-2018', '10-10-2019', '25-10-2019', '9-11-2019', '12-10-2020', '27-10-2020', '11-11-2020')
dates <- as.Date(data_vector, format = '%d-%m-%Y')
y1 <- c(21.900,22.700,23.400,NA,NA,NA,NA,NA,NA)
y2 <- c(NA,NA,NA,21.100,21.000,21.200,NA,NA,NA)
y3 <- c(NA,NA,NA,NA,NA,NA,22.100,22.200,22.300)
x <- rep(dates, times = 3)
y <- c(y1, y2, y3)
gr <- rep(1:3, each = 9)
ggplot(data = NULL, aes(x = update(x, year = 1),
y = c(y1, y2, y3),
group = interaction(gr, lubridate::year(x)))) +
geom_point() +
geom_line()
#> Warning: Removed 18 rows containing missing values (geom_point).
#> Warning: Removed 18 row(s) containing missing values (geom_path).
