简体   繁体   English

R:分布式应用相关

[英]R: apply correlation distributively

Is there a better way of applying cor() between all members, other than using a for loop: 除了使用for循环之外,是否还有更好的方法在所有成员之间应用cor():

crosses1 = colnames(data)
crosses1 = crosses1[-(match("Date", crosses1))]
crosses2 = rev(crosses1)
crosses = matrix(nrow = length(crosses1), ncol = length(crosses2), dimnames = list(crosses1, crosses2))

for(cross1 in crosses1){
    for(cross2 in crosses2){
        corValue = cor(data[,cross1], data[,cross2], use = "pairwise.complete.obs", method = "pearson")
        crosses[cross1,cross2] = corValue
    }
}

data is just a matrix which columns are codes, and rows are the different values of these codes on specific dates. data只是一个矩阵,列是代码,行是在特定日期这些代码的不同值。 So, I want to have a cross correlation between every code. 因此,我希望每个代码之间都具有互相关性。

Apologies for my lack of experience, but I'm learning R. 抱歉,我缺乏经验,但我正在学习R。

Thanks. 谢谢。

cor already does that, just pass a matrix to the function like the following. cor已经做到了,只需将矩阵传递给以下函数即可。

X <- replicate(4, rnorm(10))  # Create some toy data
rownames(X) <- paste0("Obs", 1:nrow(X))
colnames(X) <- paste0("Var", 1:ncol(X))
print(X)
#             Var1       Var2       Var3        Var4
#Obs1   2.28277343 -0.2554098 -1.6855545 -0.88925980
#Obs2   0.18893139  1.8864308 -2.3971334 -0.79902474
#Obs3   0.15952813 -0.3048320 -2.2321410 -0.96378752
#Obs4  -0.50163072  1.9142441  0.2959703  0.19532908
#Obs5   0.04480382  0.8919782 -1.5025163  1.28883810
#Obs6  -1.27758040 -1.2707019 -0.3497341  1.19329181
#Obs7  -0.01028843 -0.9573063  0.3820127 -0.90302080
#Obs8   0.30440036  0.6356221 -0.8722866  0.67146318
#Obs9   2.10757600  0.6366983 -0.5190173 -0.51735927
#Obs10  2.93849016  0.8399872  1.3714519  0.09522004

cor(X)
#           Var1        Var2        Var3        Var4
#Var1  1.0000000  0.14661593  0.19663054 -0.38305468
#Var2  0.1466159  1.00000000 -0.06886487  0.03659647
#Var3  0.1966305 -0.06886487  1.00000000  0.23375487
#Var4 -0.3830547  0.03659647  0.23375487  1.00000000

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM