With the data that you generated, there is no need to summarise() with dplyr. Each record is unique. So this seems more like a place to use apply().
There are ways to loop through this; I just created twelve statements. We are passing the mu,lamda columns of df to the apply function and then using your function across each 36000 rows to grab the 12 pieces of that vector into 12 new variables y1:y12.
df$y1 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[1])
df$y2 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[2])
df$y3 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[3])
df$y4 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[4])
df$y5 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[5])
df$y6 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[6])
df$y7 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[7])
df$y8 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[8])
df$y9 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[9])
df$y10 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[10])
df$y11 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[11])
df$y12 <- apply(df[,3:4], 1, function(x) round(gompertz(1:12,100,x[1],x[2]), digits = 2)[12])
head(df)
location year mu lambda y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12
1 1 1980 38.70790 4.531560 0 0 0 0.86 19.00 56.00 81.67 93.18 97.56 99.14 99.70 99.89
2 1 1981 42.64717 4.765444 0 0 0 0.14 12.60 52.22 81.56 93.81 98.01 99.37 99.80 99.94
3 1 1982 39.19041 4.527792 0 0 0 0.85 19.33 56.75 82.27 93.49 97.71 99.20 99.73 99.91
4 1 1983 37.50859 4.565435 0 0 0 0.79 17.46 53.28 79.68 92.13 97.09 98.94 99.62 99.86
5 1 1984 36.71666 4.779357 0 0 0 0.27 11.29 44.76 74.36 89.65 96.05 98.53 99.45 99.80
6 1 1985 42.11325 4.783322 0 0 0 0.13 11.99 50.91 80.66 93.39 97.85 99.31 99.78 99.93
NOTE: within dplyr you could also do something like:
df <- df %>% rowwise() %>% mutate(y1 = round(gompertz(1:12,100,mu,lambda), digits = 2)[1],
y2 = round(gompertz(1:12,100,mu,lambda), digits = 2)[2],
y3 = round(gompertz(1:12,100,mu,lambda), digits = 2)[3],
y4 = round(gompertz(1:12,100,mu,lambda), digits = 2)[4],
y5 = round(gompertz(1:12,100,mu,lambda), digits = 2)[5])
and repeat with 6-12, and achieve same result.