如何在R中调用geomorph的two.b.pls实现8个3D数组两两PLS回归分析
实现方案
你可以通过R内置的combn函数生成所有不重复的两两组合,批量调用two.b.pls完成分析,具体代码如下:
# 加载geomorph包 library(geomorph) # 1. 将所有3D数组存入命名列表,便于后续结果匹配 groups <- list( Group_1 = Group_1, Group_2 = Group_2, Group_3 = Group_3, Group_4 = Group_4, Group_5 = Group_5, Group_6 = Group_6, Group_7 = Group_7, Group_8 = Group_8 ) # 2. 生成两两组合并批量运行PLS分析 pls_output <- combn( x = length(groups), m = 2, FUN = function(pair_idx) { res <- two.b.pls(groups[[pair_idx[1]]], groups[[pair_idx[2]]], iter = 999) # 为结果添加配对标签 attr(res, "group_pair") <- paste(names(groups)[pair_idx], collapse = " vs ") return(res) }, simplify = FALSE ) # 3. 为结果列表命名,可直接通过配对名称调取对应分析结果 names(pls_output) <- sapply(pls_output, function(x) attr(x, "group_pair"))
结果调用示例
- 调取指定配对的分析结果:
pls_output[["Group_1 vs Group_2"]] - 批量提取所有配对的显著性P值:
all_pvalue <- sapply(pls_output, function(x) x$P.value) print(all_pvalue)
如果不需要保留完整分析结果仅需要统计指标,可直接在combn的自定义函数中返回对应指标,降低内存占用。
内容的提问来源于stack exchange,提问作者antecessor
相关产品推荐
相关产品推荐

