R编写自定义绘图函数时无法识别传入参数var的问题求助
报错根因
你代码中使用的{{}}(卷曲运算符,curly-curly)是tidyverse生态专属的非标准求值语法,仅支持dplyr、ggplot2等tidyverse体系内的函数。rpart()、stripchart()、boxplot均不原生支持该语法,R会直接将未解析的var作为列名在数据框中检索,因此触发找不到列的报错。
修复方案
通过动态构建公式对象适配这些函数的传参要求即可,同时建议将数据框作为参数传入函数,避免硬编码全局变量引发的环境冲突,修复后代码如下:
explore = function(var, title, data = df) { par(mfrow = c(1,2)) # 提取传入的变量名转为字符串 var_name <- deparse(substitute(var)) # 分别构建两类模型/绘图用的公式 rpart_form <- as.formula(paste0("y ~ ", var_name)) plot_form <- as.formula(paste0(var_name, " ~ y")) tr = rpart(rpart_form, data = data) plot(tr, margin = .1, uniform = TRUE, main = title) text(tr, fancy = TRUE, use.n = TRUE) stripchart(plot_form, main = title, data = data, method = "stack") boxplot(plot_form, data = data) }
调用示例
调用方式和你原先的预期完全一致,无需修改传参逻辑:
# 假设你要传入的列名为income explore(income, "收入与目标变量关联分析")
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

