首页 > 解决方案 > 如何将数据框列作为参数传递给用户定义的函数?

问题描述

我想要做的是为一个类设置一个基本的用户定义函数,该函数将为一个预测变量针对目标变量创建一个箱线图。这是我的代码:

  ggplot(data=df, aes(x=target, y=predictor)) + geom_boxplot(
  aes(col=target), notch=TRUE)}
#Below is how I'm calling the function
BoxplotPredictorOnTarget(df$target, df$predictor)

我的问题是,有没有更优雅的方式可以在调用函数时使用数据框列名作为参数?如果能够基于相同的参数为结果箱线图的 x 和 y 轴添加名称,那就太好了。我也只是对它是如何工作的感到困惑。当我进行函数调用并将列名放在双引号中时,不使用数据框变量名和“$”运算符,它返回一个箱线图,它只是一条直线,轴没有任何意义,它们只是列名。我很困惑为什么使用列名的字符串作为参数不起作用,当它们被插入到函数中时,它应该和我只是写列名一样,对吧?

标签: r

解决方案


我们可以将列名字符串转换为符号并计算

library(ggplot2)  
BoxplotPredictorOnTarget <- function(df, target, predictor) {

    ggplot(data = df, aes(x= !! rlang::ensym(target),
              y= !! rlang::ensym(predictor))) +
         geom_boxplot(aes(col= !! rlang::ensym(target)), notch=TRUE)
   }

然后调用为

BoxplotPredictorOnTarget(df, 'target', 'predictor')

使用可重现的示例

data(iris)
BoxplotPredictorOnTarget(iris, 'Species', 'Sepal.Length')

-输出

在此处输入图像描述


推荐阅读