如何在R中编写t_or_welch函数,自动选择t检验/Welch检验
实现动态匹配方差齐性结果的检验函数
我们有一个fish数据框,行名为样本名称,存储了Fisher方差齐性检验的p值,以及对应的差异检验类型字段Test_Diff(取值为t test或Welch)。同时已经实现了test_ttest()和test_welch()两个函数分别执行对应的检验。现在需要编写t_or_welch()函数,根据输入数据集的行名匹配fish中的检验类型,自动调用对应函数,并且能适配fish数据框内容动态更新的场景。
函数实现
t_or_welch <- function(data) { # 获取输入数据集的行名(假设输入数据集对应单个样本,行名唯一) sample_name <- rownames(data) # 校验样本名是否存在于fish数据框中 if (!sample_name %in% rownames(fish)) { stop("输入数据集的行名在fish中不存在,请检查样本名匹配情况") } # 获取当前样本对应的检验类型 test_type <- fish[sample_name, "Test_Diff"] # 根据检验类型分发调用对应函数 switch(test_type, "t test" = test_ttest(data), "Welch" = test_welch(data), stop("未识别的检验类型,请检查fish的Test_Diff字段取值")) }
关键说明
- 动态适配更新:通过行名直接索引
fish数据框,无论fish中的p值或检验类型如何动态修改,都能实时获取最新的检验规则 - 异常防护:加入了样本名缺失、检验类型无效的报错逻辑,避免程序静默失败
- 可扩展性:如果后续需要新增其他检验类型,只需在
switch分支中添加对应的函数调用即可
使用示例
当输入 t_or_welch(tito_3)时,函数会自动匹配fish中tito_3对应的Test_Diff值,若该值为Welch,则直接调用test_welch(tito_3)执行检验。
内容的提问来源于stack exchange,提问作者antecessor
相关产品推荐
相关产品推荐

