[英]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的行命名?
我想mantel
是vegan
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.