ggplot2:如果对象存在则使用标签,否则选择 default/NULL

ggplot2: use label if object exists, otherwise choose default/NULL

我有一个 ggplot2 函数,其中包含以下命令:

sp <- sp + geom_point() + gs + scale_linetype_manual(values =
            c('solid',  'longdash','dashed', 'twodash', 'dotdash', 'dotted'), labels=labls)

这是由具有不同数据集的用户使用的。如果我将对象 labls 定义为向量(例如 labls=c("cow","horse","chicken")),当然可以正常工作。但是,我希望它在对象不存在时引用默认标签(在本例中为:1、2、3)。

有没有一种快速而优雅的方法来包含这个条件?我偶然发现了“ifelse”函数,但我不确定如何在引用我让“标签”请求的对象时使用它?

谢谢

使用 labels = waiver() 指定您需要默认值。

library(ggplot2)

create_plot <- function(df, labels) {
  if (missing(labels)) {
    labels <- waiver()
  }
  
  ggplot(df, aes(Sepal.Length, Sepal.Width, linetype = Species)) +
    geom_line() +
    scale_linetype_manual(values = c('longdash','dashed', 'twodash'), labels = labels)
}

指定labels

create_plot(iris, labels = c('A', 'B', 'C'))

未指定 labels 并获取默认值

create_plot(iris)