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

如何为survfit函数传递参数?自定义函数调用报错排查

问题解决:自定义函数中向survfit传递变量参数的错误

你遇到的报错原因是:函数里的surv_object ~ argument公式会把argument当作字面变量名去data_surv里查找,但你实际想传入的是initial_treatment这个变量,函数内部并没有名为argument的变量,所以触发了找不到对象的错误。

下面提供三种可行的解决方法:

方法1:使用reformulate函数生成公式

reformulate可以直接通过字符串生成公式,适合传入变量名字符串的场景:

test_function <- function(argument) {
  survfit(reformulate(argument, response = "surv_object"), data = data_surv)
}

# 调用时传入变量名的字符串形式
test_function("initial_treatment")

方法2:使用整洁评估({{}})

借助rlang包的整洁语法,直接注入变量名,调用时无需加引号:

library(rlang)

test_function <- function(argument) {
  survfit(surv_object ~ {{argument}}, data = data_surv)
}

# 直接传入变量名即可
test_function(initial_treatment)

方法3:手动拼接公式字符串

通过deparse(substitute())获取传入的变量名字符串,拼接后转为公式对象:

test_function <- function(argument) {
  formula_text <- paste("surv_object ~", deparse(substitute(argument)))
  survfit(as.formula(formula_text), data = data_surv)
}

# 直接传入变量名
test_function(initial_treatment)

内容的提问来源于stack exchange,提问作者Philipp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:37:07