I performed a wilcox test and now I want to extract the p.value in to a list or matrix.
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 )
})
The result of my wilcox test for each rows looks like this: I wanna know how i can get the p.value in a list or a matrix to export to a excel file? [[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
Just add $p.value
to extract your p.value from your wilcox.test
object :
lapply(1:nrow(DF), function(i){
wilcox.test(as.numeric(sampA[i,]), as.numeric(sampB[i,]), exact=FALSE )$p.value
})
Which gives :
[[1]]
[1] 1
[[2]]
[1] 1
[[3]]
[1] 0.8247781
[[4]]
[1] 0.8247781
By using sapply
instead of lapply
you would get a vector instead of a list, which could be easier to manipulate.
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
Use sapply
and reference the p.value name...
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
This will return a vector rather than a list (I usually find vectors to be easier to handle, e.g. because you can't index a list using mylist[[1:5]]
, but you can do myvector[1:5]
, but that's personal preference
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With