假设我有两个ggplot美学:
a.1 <- aes(v.1=1, v.2=2)
a.2 <- aes(v.3=3)
有没有办法结合已经建成的美学?在我的例子中,它将是:
a.merged <- aes(v.1=2, v.2=2,v.3=3)
我知道aes_string可用于从字符向量构建美学,可以连接,但我看的是已经构建了两个美学的情况,我想避免首先将它们转换为字符
答案 0 :(得分:7)
> c(a.1,a.2)
$v.1
[1] 1
$v.2
[1] 2
$v.3
[1] 3
aes
个对象是“未评估的表达式”,c()
函数按预期工作,具体取决于您对“预期”的定义。为了安全起见,您可能需要添加被c()
剥离的类:
a.merged <- c(a.1,a.2)
class(a.merged) <- "uneval"
如果您想一步完成,那么函数modifyList
将不会删除“名称” - 无属性:
> 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"
答案 1 :(得分:0)
<b>
library(ggplot2)
a.1 <- aes(v.1=1, v.2=2)
a.2 <- aes(v.3=3)
modifyList(a.1, a.2)
Aesthetic mapping:
* `v.1` -> 1
* `v.2` -> 2
* `v.3` -> 3
不会改变它的参数,尽管名称如此。感谢 Simon.S.A. 提出这种方法 in the comments。