Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算R中两个向量的所有子集的相关性?_R_Time Series_Subset_Apply_Correlation - Fatal编程技术网

如何计算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)

我在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), 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]