R中矩阵列的循环相关
Looping correlations in matrix columns in R
我有一个 200x200 的模拟模型矩阵,想计算某些列之间的相关性。以下是部分数据:
var1 var2 var3 var4
[1,] 0.000000000 0.0000000000 0.00000000 0.000000000
[2,] 0.081707812 -0.4674752956 -0.09885623 0.311421458
[3,] 0.104660320 -0.5066112338 0.16215542 0.224543735
[4,] 0.148780552 -0.2419104721 -0.01707375 0.122405936
我试图找到 var1 和 var2、var3 和 var4、var5 和 var6 等之间的相关性。将相关性输出到 100 长度的向量中将是惊人的。
我将数据分成 100 个 200x2 矩阵,分别命名为 R1、R2 等,并使用了这段代码
for(i in 1:100){
cor[i] <- cor(get(paste0(R,i,))[,1], get(paste0(R,i,))[,2])
}
但是返回错误
Error in paste0(R, i, ) : object 'R' not found
将数据存储到一个矩阵中显然比一百个更可取,但我是 R 的绝对新手,搜索后无法弄清楚如何做到这一点。
感谢您的帮助。
这是您的示例的一种方式:
x <- matrix(c(0.000000000, 0.0000000000, 0.00000000, 0.000000000,
0.081707812, -0.4674752956, -0.09885623, 0.311421458,
0.104660320, -0.5066112338, 0.16215542, 0.224543735,
0.148780552, -0.2419104721, -0.01707375, 0.122405936),
4, 4, byrow = TRUE)
out <- cor(x)
diag(out[c(1,3), c(2,4)])
#[1] -0.5784471 -0.0925900
然后您可以扩展到 200x200 矩阵:
out <- cor(x)
diag(out[seq(1,200,2), seq(2,200,2)])
我有一个 200x200 的模拟模型矩阵,想计算某些列之间的相关性。以下是部分数据:
var1 var2 var3 var4
[1,] 0.000000000 0.0000000000 0.00000000 0.000000000
[2,] 0.081707812 -0.4674752956 -0.09885623 0.311421458
[3,] 0.104660320 -0.5066112338 0.16215542 0.224543735
[4,] 0.148780552 -0.2419104721 -0.01707375 0.122405936
我试图找到 var1 和 var2、var3 和 var4、var5 和 var6 等之间的相关性。将相关性输出到 100 长度的向量中将是惊人的。
我将数据分成 100 个 200x2 矩阵,分别命名为 R1、R2 等,并使用了这段代码
for(i in 1:100){
cor[i] <- cor(get(paste0(R,i,))[,1], get(paste0(R,i,))[,2])
}
但是返回错误
Error in paste0(R, i, ) : object 'R' not found
将数据存储到一个矩阵中显然比一百个更可取,但我是 R 的绝对新手,搜索后无法弄清楚如何做到这一点。
感谢您的帮助。
这是您的示例的一种方式:
x <- matrix(c(0.000000000, 0.0000000000, 0.00000000, 0.000000000,
0.081707812, -0.4674752956, -0.09885623, 0.311421458,
0.104660320, -0.5066112338, 0.16215542, 0.224543735,
0.148780552, -0.2419104721, -0.01707375, 0.122405936),
4, 4, byrow = TRUE)
out <- cor(x)
diag(out[c(1,3), c(2,4)])
#[1] -0.5784471 -0.0925900
然后您可以扩展到 200x200 矩阵:
out <- cor(x)
diag(out[seq(1,200,2), seq(2,200,2)])