R:按列跨两个矩阵运行corr

时间:2013-12-10 18:41:03

标签: r

我正在跟踪我的猫有多大势头,并试图弄清楚这与他们吃多少有关。

所以,如果我有以下数据:

food <- cbind(fluffy=c(0.9,1.1,1.3,0.7),misterCuddles=c(0.5,1.2,1.4,0.5))
poop <- cbind(fluffy=c(0.9,1.1,1.3,0.7),misterCuddles=c(-0.5,-1.2,-1.4,-0.5))
dates <- c("2013-01-01", "2013-01-02", "2013-01-03","2013-01-04")
rownames(food) <- dates
rownames(poop) <- dates
cube <- abind(food, poop, along=3)

好奇的笔记:

  • 金额是十分之一:1.1意味着大便重约11便士
  • 负面大量证明了拥抱者是麒麟的一部分

这给了我以下内容:

> cube

, , food

           fluffy misterCuddles
2013-01-01    0.9           0.5
2013-01-02    1.1           1.2
2013-01-03    1.3           1.4
2013-01-04    0.7           0.5

, , poop

           fluffy misterCuddles
2013-01-01    0.9          -0.5
2013-01-02    1.1          -1.2
2013-01-03    1.3          -1.4
2013-01-04    0.7          -0.5

现在,如果我想找到mister cuddles的相关性来展示他的魔力:

> corr(cube[,"misterCuddles",])

[1] -1

我想要的是一个带有每只猫相关数的命名向量:

> c(fluffy=1.0,misterCuddles=-1.0)

       fluffy misterCuddles 
            1            -1 

有没有办法我可以一次性完成这项工作,理想情况下并行?实际上,我有很多猫。

谢谢!

修改

可以像......一样简单吗?

> result <- simplify2array(mclapply(colnames(food), function(x) corr(cube[,x,])))
> names(result) <- colnames(food)
> result
       fluffy misterCuddles 
            1            -1 

1 个答案:

答案 0 :(得分:2)

library(boot) # for corr
sapply(dimnames(cube)[[2]], function(x) corr(cube[ , x, ]))

#    fluffy misterCuddles 
#         1            -1