R语言使用sn库psn函数在mutate中多参数调用报参数缺失错如何解决
问题原因
purrr::map仅支持单参数迭代,你传入list(par, value=finfl_new2)时,函数会把列表的两个元素作为两次独立调用的入参:第一次仅传入par列,没有传入value参数,直接触发参数缺失报错。- 你的需求是每行同时取当前行的
par和finfl_new2两个参数传入myp函数,属于双参数并行迭代场景,需要改用purrr::map2实现。
修正后代码
# 原自定义函数无需修改 myp <- function(par,value){ par0 <- unlist(par) data.frame(x=value,prob=sn::psn(x=value, xi=par0[1], omega=par0[2], alpha=par0[3], nu=par0[4])) } # 替换map为map2,按行传入两个参数 df1_bfgs <- filter(df1, par!="error") %>% mutate(prob = map2(.x = par, .y = finfl_new2, .f = myp)) # 可选操作:如果要把prob列的嵌套数据框展开为普通列,可加unnest # df1_bfgs <- df1_bfgs %>% unnest(prob)
内容的提问来源于stack exchange,提问作者Berenice Martinez
相关产品推荐
相关产品推荐

