计算真实患病率:解决prevalence包truePrev函数向量输入报错问题
解决prevalence包truePrev函数批量计算真实患病率的问题
truePrev函数本身仅支持单个x和n值输入,直接传入长度>1的向量会触发错误——因为函数内部的条件判断逻辑没做向量兼容处理,就会出现你看到的the condition has length > 1报错。
要批量计算多组x和n对应的真实患病率,你可以用循环类函数逐个处理每组数据,以下是两种可行方法:
方法1:用基础R的mapply函数
mapply可以自动对应x和n向量的每一对元素,逐个调用truePrev:
library(prevalence) # 定义输入的向量和参数 x_vec <- c(142, 149, 6) n_vec <- c(742, 742, 742) SE_val <- 0.90 SP_val <- 0.90 # 批量计算,返回列表格式的结果 batch_results <- mapply(function(x, n) { truePrev(x = x, n = n, SE = SE_val, SP = SP_val) }, x = x_vec, n = n_vec, SIMPLIFY = FALSE) # 查看每组结果 batch_results
方法2:用tidyverse风格的map2函数
如果你习惯tidyverse工具链,可以用purrr包的map2函数实现同样效果:
library(prevalence) library(purrr) x_vec <- c(142, 149, 6) n_vec <- c(742, 742, 742) SE_val <- 0.90 SP_val <- 0.90 # 批量计算 batch_results <- map2(x_vec, n_vec, ~truePrev(x = .x, n = .y, SE = SE_val, SP = SP_val)) # 如果需要把结果整理成数据框,可结合dplyr library(dplyr) results_df <- bind_rows(batch_results) print(results_df)
两种方法都会返回每组x、n对应的真实患病率估计值及置信区间,你可以根据自己的编程习惯选择。
内容的提问来源于stack exchange,提问作者user22295101
相关产品推荐
相关产品推荐

