首页 > 解决方案 > do.call 错误,提供的元素多于要替换的元素(用 rlang::invoke 修复)[R]

问题描述

将参数列表(仅用于简化参数列表)传递给do.call...时出现一个奇怪的错误,可以通过使用rlang::invoke来解决,但我想了解这里发生了什么。谢谢。

> mydata <- source("https://pastebin.com/raw/bL8ZHvbt")$value
f <- as.formula(paste0("Surv(OS, Death) ~ ", paste(colnames(mydata)[-c(7:8)], collapse = " + ")))

> SurvBoost::boosting_core(formula = f, data = mydata, rate = 0.1)
$call
SurvBoost::boosting_core(formula = f, data = mydata, rate = 0.1)

$coefficients
Double_positive_CD4p_CD8dim      TCD4p_CM_CD127low_PD1n      TCD4p_CM_CD127low_PD1p  TCD4p_CM_CD127p_CD25p_PD1n        TCD4p_CM_CD127p_PD1n 
                 0.15576408                 -0.03984465                 -0.22904226                 -0.03556506                 -0.15901050 
     TCD4p_EM_CD127low_PD1n 
                 0.04126120 

> do.call(SurvBoost::boosting_core, c(list(formula = f, data = as.data.frame(mydata)), list(rate = 0.1)))
Error in names(output)[[1]] <- data_name : 
  more elements supplied than there are to replace

> rlang::invoke(SurvBoost::boosting_core, c(list(formula = f, data = as.data.frame(mydata)), list(rate = 0.1)))
$call
.fn(formula = `1`, data = `2`, rate = `3`)

$coefficients
Double_positive_CD4p_CD8dim      TCD4p_CM_CD127low_PD1n      TCD4p_CM_CD127low_PD1p  TCD4p_CM_CD127p_CD25p_PD1n        TCD4p_CM_CD127p_PD1n 
                 0.15576408                 -0.03984465                 -0.22904226                 -0.03556506                 -0.15901050 
     TCD4p_EM_CD127low_PD1n 
                 0.04126120 

标签: rdebuggingrlangdo.call

解决方案


推荐阅读