R语言group_by调用自定义jackknife_CI函数提示变量不存在如何解决
报错原因
你自定义的jackknife_CI是普通R函数,不支持tidyverse的非标准评估规则,无法直接识别分组数据框内的列名,所以会提示找不到len_x对象。
解决方案
将分组后的自定义函数调用改为适配tidyverse语法的形式即可,以下是可直接运行的修正代码:
library(dplyr) # 优化数据集合并步骤,避免cbind导致的匹配错误 df <- inner_join(df1, df2, by = "dose") # 分组计算置信区间 jack_CI <- df %>% group_by(dose) %>% group_modify(~ tibble( ci_lower = jackknife_CI(.x$len_x, .x$len_y)[1], ci_upper = jackknife_CI(.x$len_x, .x$len_y)[2] ))
其中.x代表每个dose分组对应的子数据框,用$运算符直接提取对应列传入自定义函数,即可解决找不到对象的问题。
如果你更习惯用summarize语法,也可以用cur_data()提取当前分组的数据集:
jack_CI <- df %>% group_by(dose) %>% summarize( ci_lower = jackknife_CI(cur_data()$len_x, cur_data()$len_y)[1], ci_upper = jackknife_CI(cur_data()$len_x, cur_data()$len_y)[2] )
内容的提问来源于stack exchange,提问作者damned-to-suffer
相关产品推荐
相关产品推荐

