我有2个数据帧,每个数据帧有150行和10列+列和行ID。我想将一个数据帧中的每一行与另一个数据帧中的每一行相关联(例如150x150相关)并绘制得到的22500值的分布。(然后我想从分布中计算p值等 - 但这是下一步)。
坦率地说,我不知道从哪里开始。我可以读取我的数据并查看如何关联矢量或匹配两个矩阵的切片等,但我无法处理我在这里尝试做的事情。
答案 0 :(得分:2)
set.seed(42)
DF1 <- as.data.frame(matrix(rnorm(1500),150))
DF2 <- as.data.frame(matrix(runif(1500),150))
#transform to matrices for better performance
m1 <- as.matrix(DF1)
m2 <- as.matrix(DF2)
#use outer to get all combinations of row numbers and apply a function to them
#22500 combinations is small enough to fit into RAM
cors <- outer(seq_len(nrow(DF1)),seq_len(nrow(DF2)),
#you need a vectorized function
#Vectorize takes care of that, but is just a hidden loop (slow for huge row numbers)
FUN=Vectorize(function(i,j) cor(m1[i,],m2[j,])))
hist(cors)
答案 1 :(得分:1)
您可以将cor
与两个参数一起使用:
cor( t(m1), t(m2) )