我想做的是为一个类设置一个基本的用户定义函数,该函数将针对目标变量为预测变量创建箱形图。这是我的代码:
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轴上会很好。我也只是对此工作方式感到困惑。当我进行函数调用并将列名放在双引号中,而没有使用数据框变量名和“ $”运算符时,它会返回一个箱形图,该箱形图只是一条直线,并且轴没有任何意义,它们只是列名。我很困惑,为什么不能使用列名的字符串作为参数,当将它们插入函数时,应该和我只是在写列名一样,对吧?
答案 0 :(得分:2)
我们可以将列名字符串转换为符号并求值
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')
-输出