Crafting these by hand is OK if there are a few labels, but is tedious and not-automated. There are ways to combine individual expression into an expression "vector", and we can automate the construction of the individual expressions. Here is one way, I forget if there are other ways or even if this is the canonical way (the general issue has been asked and answered on StackOverflow [including by me!] before but I couldn't find it in a very quick search).
op <- par(mar = c(5,4,4,6) + 0.1)
plot(1:10)
axis(1)
labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
axis(4, at = seq(1, by = 2, length = 5),
labels = do.call(expression, labs), las = 1)
par(op)
Which produces
I separated the the stages for exposition. The first is
> labs <- lapply(alpha, function(x) bquote(alpha == .(x)))
> labs
[[1]]
alpha == 0.1
[[2]]
alpha == 0.05
[[3]]
alpha == 0.01
[[4]]
alpha == 0.005
[[5]]
alpha == 0.001
which produces a list of calls.
The second step is to combine these into an expression, which I do with do.call()
> do.call(expression, labs)
expression(alpha == 0.1, alpha == 0.05, alpha == 0.01, alpha ==
0.005, alpha == 0.001)
You can of course combine these:
labs <- do.call(expression, lapply(alpha, function(x) bquote(alpha == .(x))))
axis(4, at = seq(1, by = 2, length = 5),
labels = labs, las = 1)
expression()
so I was wondering how to do it. – Gourmont