R语言如何拆分向量为独立元素作为do.call的传入参数
问题根源
你构造参数列表的写法产生了嵌套结构:list(dat$t, as.list(getvarnames(n, "a")))的输出是长度为2的列表,第一个元素是dat$t向量,第二个元素是as.list()生成的数值参数子列表。do.call执行时会把第二个子列表整体作为单个参数传入,和bezmulti要求多个独立数值参数的逻辑不匹配。
解决方法
用c()做列表的扁平拼接即可,注意要先把dat$t包裹在单独的列表中,避免向量本身被拆分为多个参数:
# 生成无嵌套的扁平参数列表 arg_list <- c(list(dat$t), as.list(getvarnames(n, "a"))) # 调用函数 do.call(bezmulti, arg_list)
结构说明
假设getvarnames(n, "a")返回长度为k的数值向量,最终arg_list长度为k+1:
- 第1位:完整的
dat$t向量 - 第2到k+1位:依次为拆分后的单个数值参数
和你预期的列表结构完全一致,不存在嵌套、多元素向量整体作为单个参数的问题。
内容的提问来源于stack exchange,提问作者Arkadiusz Nowak
相关产品推荐
相关产品推荐

