计算Spearman的rho以增加for Loop中的行子集

时间:2018-09-08 13:21:52

标签: r loops

我试图在R中适合for循环,以便为数据帧中的多个子集运行相关性,然后将结果存储在向量中。

在此循环中,我有一个数据帧,其中包含2列x和y,每列中有30行不同的连续测量值。该过程应重复100次。可以发明数据。 我需要的是计算前五行(x和y之间)的Spearman的rho,然后计算递增的子集(例如,第六排,第七排,第一排等)。然后,我需要将rho结果存储在一个可以进一步使用的向量中。

我的想法(但不起作用)

sortvector <- 1:(30) 
for (i in 1:100) 
{
sortvector <- sample(sortvector, replace = F) 
xtemp <- x[sortvector] 
rho <- cor.test(xtemp,y, method="spearman")$estimate  
}

问题是代码在整个数据帧中给了我一个rho值,但是对于子集的增量我需要它。 在for循环中,如何获得递增值子集的rho?以及如何将系数存储在以后可以使用的向量中?

非常感谢您的帮助。

欢呼

1 个答案:

答案 0 :(得分:0)

最简单的方法是将for循环转换为sapply函数,由于引导,该函数返回rho的向量:

sortvector <- 1:(30)
x <- rnorm(30)
y <- rnorm(30)

rho <- sapply(1:100, function(i) {
  sortvector <- sample(sortvector, replace = F) 
  xtemp <- x[sortvector] 
  cor.test(xtemp, y, method = "spearman")$estimate  
})

head(rho)

输出:

         rho          rho          rho          rho          rho          rho 
 0.014460512 -0.239599555  0.003337041 -0.126585095  0.007341491  0.264516129