Here is one way to make a data frame with life expectancy for every year using a spline fit. You can extend this to the pop and GDP variables by making a function to fit each of them and adding another column in the mutate where I calculate PredictedLifeExp.
library(splines)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyr)
library(purrr)
library(ggplot2)
library(gapminder)
DF <- gapminder %>% filter(continent == "Americas")
SplFitLife <- function(x){
FIT <- lm(lifeExp ~ bs(year, knots = seq(1957, 2002, by = 5), degree = 1), data = x)
Pred <- predict(FIT, newdata = data.frame(year =seq(1952, 2007, by = 1)))
data.frame(year = seq(1952, 2007), PredLifeExp = Pred)
}
DF2 <- DF %>% group_by(country) %>% nest() %>%
mutate(PredictedLife = map(data,SplFitLife)) %>%
select(country, PredictedLife) %>%
unnest(cols = PredictedLife)
#show predicted line and actual points
ggplot() + geom_line(aes(year, PredLifeExp), data = DF2) +
geom_point(aes(year, lifeExp), data = DF) + facet_wrap(~country) +
theme(axis.text.x = element_text(angle = 90, hjust = 0.5, vjust = 0.5))

Created on 2020-01-04 by the reprex package (v0.3.0)