簡體   English   中英

為多個對象的成對“全部與全部”比較創建循環

[英]Creating a loop for a pairwise “all vs all” comparison of multiple objects

我想對多個數據幀進行成對的“全部與全部”組合,以我的Mantel測試為例。

我要比較大約50種不同的矩陣:Obj1,Obj2,Obj3,...,Objn

library(vegan)
mantel(Obj1, Obj2)

我可以遍歷所有組合嗎,可能會省略冗余對嗎? 因此,僅做n * (n-1)/2一半?

我正在將結果收集到一個數據框中:

result <- data.frame(mantel_r = NA, significance = NA)
mant <- mantel(Obj1, Obj2)
result[01, c("mantel_r", "significance")] <- mant[3:4]

是否可以將循環與此基本代碼結合在一起? 可能根據輸入為result.dataframe的行命名?

我想mantelvegan

library(vegan)   
names1 <- ls(pattern="Obj")
names1 #I created 3 matrices with names starting with Obj
#[1] "Obj1" "Obj2" "Obj3"

Cmb1 <- combn(names1, 2)
lst1 <- lapply(split(Cmb1, col(Cmb1)), function(x) unlist(mantel(get(x[1]), get(x[2]))[3:4]))

更新資料

我假設您希望list元素具有一些名稱。

names(lst1) <- sapply(lst1, function(x) { paste(paste(names(x), x, sep="_"), collapse="_") })

lst1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM