如何计算R中两个向量的所有子集的相关性?
我在R中工作。我有两个长度向量如何计算R中两个向量的所有子集的相关性?,r,time-series,subset,apply,correlation,R,Time Series,Subset,Apply,Correlation,我在R中工作。我有两个长度向量n,比如a和b。我想计算长度m的所有子集的相关性,方法如下: cor(a[1:m],b[1:m]) cor(a[m+1:2m],b[m+1:2m]) ... cor(a[km+1:n],b[km+1:n]) 现在我用的是自行车,但速度太慢了。如何以更快的方式执行此操作?首先创建一个分组变量(索引),然后按组计算相关性: # Some fake data: set.seed(123) df <- data.frame(cbind(a = rnorm(100)
n
,比如a
和b
。我想计算长度m
的所有子集的相关性,方法如下:
cor(a[1:m],b[1:m])
cor(a[m+1:2m],b[m+1:2m])
...
cor(a[km+1:n],b[km+1:n])
现在我用的是自行车,但速度太慢了。如何以更快的方式执行此操作?首先创建一个分组变量(
索引),然后按组计算相关性:
# Some fake data:
set.seed(123)
df <- data.frame(cbind(a = rnorm(100), b = rnorm(100), index = rep(1:10, each = 10)))
# Loading the pryr package:
library(plyr)
ddply(df, .(index), summarise, "corr" = cor(a, b))
index corr
1 1 0.26831285
2 2 0.14373593
3 3 0.21555988
4 4 -0.27461416
5 5 -0.08825786
6 6 -0.58680476
7 7 -0.02613450
8 8 -0.29408586
9 9 0.12030810
10 10 -0.04391428
或使用数据。表:
library(data.table)
setDT(df)[,cor(a, b), by = index]
语法建议您无论如何都要使用matlab。。。。问题仍然存在,向量的长度是3172000,子集的长度是61。脚本仍在运行。它持续多长时间?第二个版本对我来说是最快的,它持续不到一秒钟。
library(data.table)
setDT(df)[,cor(a, b), by = index]