0

我有以下数据:

 seed(1) 
 X <- data.frame(matrix(rnorm(2000), nrow=10))#### the dataset

以下代码创建 1000 个引导数据集“x”和 1000 个引导数据集“y”,每个数据集 5 列。

 colnums_boot <- replicate(1000,sample.int(200,10))
 output<-lapply(1:1000, function(i){
 Xprime <- X[,colnums_boot[1:5,i]]
 Yprime <- X[,colnums_boot[6:10,i]]
 xy <- list(x=Xprime,y=Yprime )
 } )

我获得了一个数据框列表“xy”列表,我想将这个特定代码应用到该列表中,但不了解列表索引操作。

从输出“xy”

考虑到第一个列表 [1]

$x and

$y

我想应用代码:

 X= cor($x) 
 Y= cor($y) separately and then 
 sapply(1:10, function(row) cor(X[row,], Y[row,]))

这将为列表 [1] 的每一行“r1”提供一个值。

我想将其应用于整个列表,并分别从 list[1] 、 list[2] 中获取 r1、r2 等等......直到 1000 并最终将其作为数据框。最终将是一万维数据框。

4

1 回答 1

1

我找不到我在哪里写 Xprime,Yprime 位的问题;我希望你没有删除它...?如果我没记错的话,我建议这样做,因为处理矩阵更有效:

Z <- as.matrix(X)
Xprime2 <- array(,dim=c(10,5,1000))
Yprime2 <- array(,dim=c(10,5,1000))
Xprime2[] <- Z[,colnums_boot[1:5,]]
Yprime2[] <- Z[,colnums_boot[6:10,]]

无论如何,在您的设置中,正如@KarlForner 评论的那样,这将使您获得 X 和 Y 列之间的相关性

lapply(output,function(ll) cor(ll$x,ll$y))

这在引导时也可能效率低下,因为您将计算相同 200 个向量之间的相关性。我认为预先计算它们cor(X)然后从那里获取值更有意义......

至于将其放入 data.frame 中,我不清楚这意味着什么。

于 2013-09-23T16:44:11.767 回答