在R自定义函数中调用marg函数时如何正确对变量参数引注
问题原因
- 直接报错诱因:
var_interest参数被硬编码为不存在的"truth",你的样本数据mtcars里没有该变量,直接触发校验报错。 - 潜在逻辑错误:
at参数的列表命名直接写cov会被识别为固定字符串"cov",不会动态替换为你传入的cov参数的取值,就算修复第一个问题,后续也会因为找不到cov变量报错。 - 参数匹配错误:函数定义仅设置2个入参,但调用时传入了4个参数,多余参数会被忽略,需要对齐入参数量。
解决方法
把核心变量、调节变量、调节变量的取值范围都设为可传入参数,用setNames动态构造at参数的命名列表即可,修正后代码如下:
library(modmarg) # 自定义函数定义 plotting_marg <- function(reg, var_interest, cov, cov_range) { # 动态生成at参数的命名列表,用传入的cov值作为列表键名 at_list <- setNames(list(cov_range), cov) margins <- marg( reg, var_interest = var_interest, at = at_list, type = "effects") return(margins) } # 调用示例 regression <- glm(mpg ~ am * hp, data = mtcars) # 如果要取hp为52到110的范围 margins_result <- plotting_marg( reg = regression, var_interest = "am", cov = "hp", cov_range = 52:110 ) # 如果要取你调用时输入的-3到3的范围,替换cov_range参数即可 # margins_result <- plotting_marg(reg = regression, var_interest = "am", cov = "hp", cov_range = -3:3)
内容的提问来源于stack exchange,提问作者broti
相关产品推荐
相关产品推荐

