2013-09-23 17 views
0

的列表,我有以下數據:施加函數dataframes

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

我得到的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」爲單個值。

我想將它應用到整個列表中,並分別從列表[1],列表[2]中獲取r1,r2,等等..直到1000並將其作爲數據框到最後。這將是一個十萬分之一的數據框。

+0

只是'lapply'在你的輸出列表上的一個函數(l),你可以在其中使用l $ x和l $ y。 –

+1

在單個矢量上詢問「cor」是沒有意義的。請編輯您的問題,以便統計數據合理。 –

回答

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中,我不清楚它意味着什麼。