In case you don't mind when x is created in .GlobalEnv, and potentially overwriting it, you can use <- inside data.frame.
quotes<-alist(x, x+1, x+2)
data.frame(x=x <- c(5, 10, 15), lapply(quotes, eval))
# x c.5..10..15. c.6..11..16. c.7..12..17.
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
rm(x)
You can call it inside local but then x is not created in the .GlobalEnv and eval needs to be told to look in current environment.
local(data.frame(x=x <- c(5, 10, 15), lapply(quotes, eval, environment())))
# x c.5..10..15. c.6..11..16. c.7..12..17.
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
It is also possible to assign the values to a different name but here eval needs a list with the name x. Note that in this case TMP would be first created or overwritten and if needed, afterwards removed with rm from the .GlobalEnv.
data.frame(x=TMP <- c(5, 10, 15), lapply(quotes, eval, list(x=TMP)))
# x c.5..10..15. c.6..11..16. c.7..12..17.
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
rm(TMP)
Other (but not asked/wanted) possibilities might be using transform:
transform(data.frame(x=c(5, 10, 15)), y=lapply(quotes, eval, environment()))
# x y.c.5..10..15. y.c.6..11..16. y.c.7..12..17.
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
within:
within(data.frame(x=c(5, 10, 15)), y <- lapply(quotes, eval, environment()))
# x y
#1 5 5, 10, 15
#2 10 6, 11, 16
#3 15 7, 12, 17
or tibble:
tibble::tibble(x=c(5, 10, 15), y=sapply(quotes, eval, environment()))
## A tibble: 3 x 2
# x y[,1] [,2] [,3]
# <dbl> <dbl> <dbl> <dbl>
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
And finally (for reference) the intended output from the question:
x <- c(5, 10, 15)
data.frame(x, lapply(quotes, eval))
# x c.5..10..15. c.6..11..16. c.7..12..17.
#1 5 5 6 7
#2 10 10 11 12
#3 15 15 16 17
rm(x)