r中的嵌套循環將df1的列與df2的列關聯起來

我有兩個數據集,其中有來自不同物種的大量數據。列是物種,行是站點。兩個數據集之間的站點(行)是相同的,我要做的是將第一個數據集的列與第二個數據集的列相關聯,以查看是否存在正相關或負相關。

library(Hmisc)
rcorr(otu.table.filter$sp1,new6$spA, type="spearman"))$P
rcorr(otu.table.filter$sp1,new6$spA, type="spearman"))$r

第一個是sp1和spA之間關系的p值,第二個是r值

我最初創建了一個循環,允許我用第二個數據幀的一列檢查第一個數據幀的所有種類。不用說,如果我要使這項工作,我將不得不重復這個過程幾百次。一列df1(new6)對所有列df2(otu.table.filter的簡單循環

pvalues = list() 
for(i in 1:ncol(otu.table.filter)) {      
pvalues[[i]] <-(rcorr(otu.table.filter[ , i], new6$Total, type="spearman"))$P
}
rvalues = list()
for(i in 1:ncol(otu.table.filter)) {     
rvalues[[i]] <-(rcorr(otu.table.filter[ , i], new6$Total, type="spearman"))$r
}
p<-NULL
for(i in 1:length(pvalues)){
tmp <-print(pvalues[[i]][2])
p <- rbind(p, tmp)
}
r<-NULL
for(i in 1:length(rvalues)){
tmp <-print(rvalues[[i]][2])
r <- rbind(r, tmp)
}

fdr<-as.matrix(p.adjust(p, method = "fdr", n = length(p)))
sprman<-cbind(r,p,fdr) 

以上述為出發點,我試圖創建一個嵌套循環,每次都檢查df1的一列和df2的所有列,然后根據df2的所有列進入df1的第二列,以此類推

但在這里我有點迷路,我找不到一個解決方案在r的答案

我假設pvalues輸出應該是

pvalues[[i]][[j]]

類似地,r值輸出

rvalues[[i]][[j]]

但我有點迷路了,我不知道怎么做,因為我試過

pvalues = list()
rvalues = list()
for (j in 1:7){
for(i in 1:ncol(otu.table.filter)) {    
pvalues[[i]][[j]] <-(rcorr(otu.table.filter[ , i], new7[,j], type="spearman"))$P
}
for(i in 1:ncol(otu.table.filter)) {    
rvalues[[i]][[j]] <-(rcorr(otu.table.filter[ , i], new7[,j], type="spearman"))$r
}
}

但我不能使它工作,因為我不知道如何在列表中直接輸出,然后我也會很感激如果有人能幫助我與下一部分,這將是每次比較提取p和r值,并應用fdr函數(類似于我做的簡單循環)

這是我的兩個數據幀的一個子集

? 最佳回答:

這里有一個小演示。假設兩個矩陣x和y的樣本大小為n。那么相關性和近似p-values可以估計為:

n <- 100
x <- matrix(rnorm(10 * n), nrow = n)
y <- matrix(rnorm(5 * n), nrow = n)

## correlation matrix
r <- cor(x, y, method = "spearman")

## p-values
pval <- function(r, n) 2 * (1 - pt(abs(r)/sqrt((1 - r^2)/(n - 2)), n - 2))
pval(r, n)

## for comparison
cor.test(x[,1], y[,1], method = "spearman", exact = FALSE)

更多細節可以在這里找到:https://stats.stackexchange.com/questions/312216/spearman-correlation-significancy-test

Edit

最后一個循環是cor.test

## for comparison
p <- matrix(NA, nrow = ncol(x), ncol=ncol(y))
for (i in 1:ncol(x)) {
  for (j in 1:ncol(y)) {
    p[i, j] <- cor.test(x[,i], y[,j], method = "spearman")$p.value    
  }
}

p

這些值有些不同,因為第一個使用t-approximation,第二個使用cor.test的“精確為89算法”。

主站蜘蛛池模板: 午夜性色一区二区三区不卡视频| 国产一区二区三区在线| 精品国产免费观看一区 | 国产福利一区二区三区视频在线| 亚洲天堂一区二区三区| 国产日韩高清一区二区三区 | 欲色aV无码一区二区人妻| 不卡无码人妻一区三区音频| 成人无号精品一区二区三区| 亚洲午夜精品一区二区| 国产av熟女一区二区三区| 日本中文一区二区三区亚洲| 免费看AV毛片一区二区三区| 亚洲国产精品无码第一区二区三区| 国产未成女一区二区三区| 国产精品视频一区| 欧洲精品无码一区二区三区在线播放 | 韩国福利视频一区二区| 精品视频在线观看你懂的一区| 日韩精品中文字幕无码一区| 精品国产天堂综合一区在线| 久久精品国产免费一区| 亚洲av无码片区一区二区三区| 国产精品伦子一区二区三区| 精品国产一区二区三区www| 日本一道一区二区免费看| 福利一区在线视频| 丰满岳乱妇一区二区三区| 中文字幕一区二区区免| 亚洲一区精品无码| 亚洲国产情侣一区二区三区 | 一区二区三区免费精品视频| 一区二区三区四区视频在线| 国产激情一区二区三区 | 一区二区三区国产| 久久精品黄AA片一区二区三区| 亚洲av成人一区二区三区观看在线 | 久久国产精品免费一区二区三区| 国产乱码伦精品一区二区三区麻豆 | 97精品一区二区视频在线观看| 国产精品美女一区二区三区|