3

为什么我不能返回 element_text()

> ifelse(TRUE,element_text(size=20),element_text(size=10))
[[1]]
NULL

但我能做到吗?

> element_text(size=20)
List of 8
 $ family    : NULL
 $ face      : NULL
 $ colour    : NULL
 $ size      : num 20
 $ hjust     : NULL
 $ vjust     : NULL
 $ angle     : NULL
 $ lineheight: NULL
 - attr(*, "class")= chr [1:2] "element" "element_text"
4

1 回答 1

7

您不能以您尝试使用它的方式:

这是我的意思的一个例子:

ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + 
    geom_boxplot() + 
    theme(legend.text = element_text(size=ifelse(TRUE, 20, 10)))

它与if else您使用ifelse的 ( ) 向量化有关。我认为你在追求if(){}else{}

ggplot(data=PlantGrowth, aes(x=group, y=weight, fill=group)) + 
    geom_boxplot()+ 
    theme(legend.text = if(TRUE){element_text(size=20)} else {element_text(size=10)})

虽然我真的不会以这种方式格式化它,但将其保留在一行中以便与您的方法进行比较。

问题不在于ggplot2您使用ifelse. 签出?ifelse,文档说:

 ‘ifelse’ returns a value with the same shape as ‘test’ which is
 filled with elements selected from either ‘yes’ or ‘no’ depending
 on whether the element of ‘test’ is ‘TRUE’ or ‘FALSE’.

在您的问题中,您显示的输出element_text(size=10)test结构不同。

于 2012-10-27T22:23:44.723 回答