You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:36:04