2013-03-26 93 views
2

我執行了wilcox測試,現在我想將p.value提取到列表或矩陣中。如何獲得pvalues列表?

DF <- data.frame(A1=sample(1:9, 10, T), 
        A2=sample(1:9, 10, T), 
        A3=sample(1:9, 10, T), 
        B1=sample(1:9, 10, T), 
        B2=sample(1:9, 10, T), 
        B3=sample(1:9, 10, T)) 


sampA <- DF[,grep('A', names(DF))] # Sample with columns A 
sampB <- DF[,grep('B', names(DF))] # Sample with columns B 


lapply(1:nrow(DF), function(i){ 
    wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE) 
}) 

我威爾科克斯測試的結果爲每個行看起來是這樣的: 我想知道我可以得到一個列表或矩陣的p.value導出到excel文件? [[1]]

Wilcoxon rank sum test with continuity correction 

data: as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 3, p-value = 0.6579 
alternative hypothesis: true location shift is not equal to 0 


[[2]] 

    Wilcoxon rank sum test with continuity correction 

data: as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 0, p-value = 0.0722 
alternative hypothesis: true location shift is not equal to 0 


[[3]] 

    Wilcoxon rank sum test with continuity correction 

data: as.numeric(sampA[i, ]) and as.numeric(sampB[i, ]) 
W = 6, p-value = 0.6579 
alternative hypothesis: true location shift is not equal to 0 

回答

5

只需添加$p.value從您wilcox.test對象中提取您的p.value:

lapply(1:nrow(DF), function(i){ 
    wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE)$p.value 
}) 

其中給出:

[[1]] 
[1] 1 

[[2]] 
[1] 1 

[[3]] 
[1] 0.8247781 

[[4]] 
[1] 0.8247781 

通過使用sapply代替lapply你會得到一個向量而不是一個列表,這可能更容易操作。

sapply(1:nrow(DF), function(i){ 
    wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE)$p.value 
}) 

# [1] 1.0000000 1.0000000 0.8247781 0.8247781 0.0765225 0.8247781 1.0000000 
# [8] 0.8247781 0.2682859 0.0765225 
+0

+1打我的衝擊~60秒(並且對'sapply'有明顯的相同想法!):-) – 2013-03-26 14:48:08

+0

非常感謝你哦:) – 2013-03-26 15:06:31

2

使用sapply並引用p.value名稱...

sapply(1:nrow(DF), function(i){wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE)$p.value}) 

#[1] 0.8247781 0.0765225 0.8247781 1.0000000 0.2682859 0.6625206 1.0000000 
#[8] 0.1211833 0.5065552 0.8247781 

這將返回一個載體,而不是一個列表(我經常發現矢量更容易處理,比如因爲你可以使用mylist[[1:5]]索引列表,但你可以做myvector[1:5],但這是個人喜好

+0

+1幾乎相同的答案,也:) – juba 2013-03-26 14:48:52