2013-09-23 4 views
0

목록에 대해 함수를 적용 I 다음 데이터가 :dataframes

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

다음 코드 (1000)는 "X"의 데이터 세트를 부트 스트래핑 1000 5 열 각각 "Y"데이터 세트를 부트 스트래핑 생성한다.

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) 
}) 

은 내가이 특정 코드를 적용하고 싶지만 목록 색인 작업을 이해하지 못하고있는 상태 dataframes "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까지 끝까지 데이터 프레임으로 만듭니다. 그것은 결국 10 차원 데이터 프레임이 될 것입니다.

+0

출력 목록에 l $ x와 l $ y를 사용할 수있는 함수 (l) 만 'lapply'합니다. –

+1

단일 벡터에서 'cor'을 요구하는 것은 의미가 없습니다. 통계가 합리적이되도록 질문을 편집하십시오. –

답변

1

나는 Xprime, Yprime 비트를 썼던 질문을 찾을 수 없다. 네가 그걸 지우지 않았 으면 좋겠어 ...? 내 기억이 맞다 경우가 매트릭스를 다루는 훨씬 더 효율적이기 때문에, 나는이 제안 : @KarlForner 댓글을 달았습니다,이 당신에게 X와 Y의 열 사이의 상관 관계를 얻을 것이다,

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,]] 

을 어쨌든, 당신의 설정에

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

이것은 동일한 200 개의 벡터 사이의 상관 관계를 계산하므로 부트 스트랩시 잠재적으로 비효율적입니다. 나는 그것들을 단지 앞쪽에있는 cor(X)으로 계산하고 거기서부터 값을 얻는 것이 더 합리적이라고 생각한다. ...

나는 그것을 data.frame에 두는 것만 큼 명확하지 않다.

관련 문제