Combine/Merge two ggplot aesthetics

aesthetics, ggplot2, r

Solution

> c(a.1,a.2)
$v.1
[1] 1

$v.2
[1] 2

$v.3
[1] 3

`aes` objects are "unevaluated expressions" and the `c()` function works as expected, depending on your definition of "expected". To be safe you probably need to add back the class that gets stripped by `c()`:

a.merged <- c(a.1,a.2)
class(a.merged) <- "uneval"

If you want to do it in one step then the function `modifyList` will not strip the "name"-less attributes:

> modifyList(a.1, a.2)
List of 3
 $ v.1: num 1
 $ v.2: num 2
 $ v.3: num 3
> attributes(modifyList(a.1, a.2))
$names
[1] "v.1" "v.2" "v.3"

$class
[1] "uneval"

Problem

Let's say I have two ggplot aesthetics: ``` a.1 <- aes(v.1=1, v.2=2) a.2 <- aes(v.3=3) ``` Is there a way to combine the already built aesthetics? In my example it would be something like: ``` a.merged <- aes(v.1=2, v.2=2,v.3=3) ``` I know that aes_string can be used to build an aesthetic from a character vector, that can be concatenated, but I am looking at the case where the two aesthetics are already built and I want to avoid having to convert them to characters first.

Original source