2013-09-25 20 views
16

bir fonksiyon uygulanarak:Ben sıra sıra korelasyon bulmak istedim iki liste

X <- matrix(rnorm(2000), nrow=10) 
Y <- matrix(rnorm(2000), nrow=10) 

aşağıdaki şekilde her bir A satır ve B arasındaki ilişkiyi bulmak istiyoruz. Örneğin orada X'in satırda 1 için bir korelasyon değeri olması ve Benzer (on satır olduğundan) toplam on değerlerinde Şimdi

sapply(1:10, function(row) cor(X[row,], Y[row,])) 

olacak tüm satırlar için başvuran Y. 1. kürek gerektiğini, nasıl olması gerektiği Bu işlevi iki listeye uygulayın (her biri yaklaşık 50 adet veri çerçevesini içerir). Düşünüldüğünde, A listesinin $ 1, $ 2, $ 3 ... vb. Veri çerçeveleri vardır ve B listesinin 1, 2 $, 3 $ gibi benzer sayıda veri karesi vardır. Bu nedenle, işlev listedeki diğer veri çerçeveleri için listA 1 ve listB $ 1 ve listA $ 2, listB $ 2 ve benzeri için uygulanmalıdır. Sonunda karşılaştırma 1 (listA $ 1 ve listB $ 1) ve diğerleri için de on değeri olacaktır.

"lapply" kullanılarak yapılabilir. Herhangi bir yardım takdir edilecektir.

cevap

25

mapply ürününü arıyor gibisiniz. İşte bir örnek:

listA <- list(matrix(rnorm(2000), nrow=10), 
       matrix(rnorm(2000), nrow=10)) 
listB <- list(matrix(rnorm(2000), nrow=10), 
       matrix(rnorm(2000), nrow=10)) 
mapply(function(X,Y) { 
    sapply(1:10, function(row) cor(X[row,], Y[row,])) 
    }, X=listA, Y=listB)