是否有任何函数可以计算 R 中数组中包含的一组矩阵之间的相关性?
Is there any function that calculate correlation between a set of matrices included in an array in R?
我有一个包含 20 个矩阵的列表。我想计算所有矩阵之间的皮尔逊相关性。但我找不到任何可能的代码或功能?你能给一些这样做的提示吗?
something like:
a=matrix(1:8100, ncol = 90)
b=matrix(8100:16199, ncol = 90)
c=matrix(sample(16200:24299),ncol = 90)
z=list(a,b,c)
我发现这个:
https://rdrr.io/cran/lineup/man/corbetw2mat.html 试试看:
library(lineup)
corbetw2mat(z[a], z[b], what = "all")
我遇到以下错误:
Error in corbetw2mat(z[a], z[b], what = "all") :
(list) object cannot be coerced to type 'double'
我想要这样的列表作为结果:
a & b
correlations
a & c
correlations
b & c
correlations
谢谢
我将创建一个较小的数据集来说明下面的解决方案。
要获得成对组合,最好的选择是使用 combn
计算组合矩阵,然后循环遍历它,在本例中为 lapply
循环。
set.seed(1234) # Make the results reproducible
a <- matrix(1:9, ncol = 3)
b <- matrix(rnorm(9), ncol = 3)
c <- matrix(sample(1:9), ncol = 3)
sample_list <- list(a, b, c)
cmb <- combn(3, 2)
res <- lapply(seq.int(ncol(cmb)), function(i) {
cor(sample_list[[ cmb[1, i] ]], sample_list[[ cmb[2, i] ]])
})
结果在列表中 res
。
注意sample
是一个基本的r函数,所以我把名字改成了sample_list
。
我有一个包含 20 个矩阵的列表。我想计算所有矩阵之间的皮尔逊相关性。但我找不到任何可能的代码或功能?你能给一些这样做的提示吗?
something like:
a=matrix(1:8100, ncol = 90)
b=matrix(8100:16199, ncol = 90)
c=matrix(sample(16200:24299),ncol = 90)
z=list(a,b,c)
我发现这个: https://rdrr.io/cran/lineup/man/corbetw2mat.html 试试看:
library(lineup)
corbetw2mat(z[a], z[b], what = "all")
我遇到以下错误:
Error in corbetw2mat(z[a], z[b], what = "all") :
(list) object cannot be coerced to type 'double'
我想要这样的列表作为结果:
a & b
correlations
a & c
correlations
b & c
correlations
谢谢
我将创建一个较小的数据集来说明下面的解决方案。
要获得成对组合,最好的选择是使用 combn
计算组合矩阵,然后循环遍历它,在本例中为 lapply
循环。
set.seed(1234) # Make the results reproducible
a <- matrix(1:9, ncol = 3)
b <- matrix(rnorm(9), ncol = 3)
c <- matrix(sample(1:9), ncol = 3)
sample_list <- list(a, b, c)
cmb <- combn(3, 2)
res <- lapply(seq.int(ncol(cmb)), function(i) {
cor(sample_list[[ cmb[1, i] ]], sample_list[[ cmb[2, i] ]])
})
结果在列表中 res
。
注意sample
是一个基本的r函数,所以我把名字改成了sample_list
。