我试图在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?以及如何将系数存储在以后可以使用的向量中?
非常感谢您的帮助。
欢呼
答案 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