为什么我不能在ifelse()中使用element_text()?

时间:2012-10-27 22:12:47

标签: r ggplot2

为什么我不能返回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"

1 个答案:

答案 0 :(得分: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不相似。