如何为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
相关产品推荐
相关产品推荐

