Re: [R] creating a file of p.values

From: Erik Iverson <>
Date: Wed, 12 Nov 2008 10:43:06 -0600

Hello - wrote:
> Hi all,
> I am performing hundreds of kruskal wallis tests and trying to figure
> out how to create a file of the p.values I obtain.
> This is the code I use for the tests:
> A2<-kruskal.test(X2~treatment)
> A3<-kruskal.test(X3~treatment)
> A4<-kruskal.test(X4~treatment)
> A5<-kruskal.test(X5~treatment)
> A6<-kruskal.test(X6~treatment)
> A7<-kruskal.test(X7~treatment)
> A8<-kruskal.test(X8~treatment)
> A9<-kruskal.test(X9~treatment)
> etc.

Whenever you find yourself typing variations on a theme, there is probably a shortcut.


## begin sample R code
## create test data.frame
test <- data.frame(X2 = rnorm(100), X3 = rnorm(100), X4 = rnorm(100),

                    treatment = rep(c("A", "B"), times = 150))

## apply the kw test to all columns of the data.frame, except treatment ## note: NOT using the model formula version of kr, see ?kruskal.test kr <- lapply(test[!names(test) %in% "treatment"],

              kruskal.test, g = test$treatment)

## use sapply (basically like lapply) to extract p.value
## note that the trick is that "[" is actually a function
## see ?Extract

sapply(kr, "[", "p.value")
## end R code

One note of caution, applying hundreds of tests and only recording the <.05 p-values is biased, you'll find chance relationships that aren't really there. In my testing above on random data, I had a few <.05, and one *highly* significant p-value, just be chance.

Hope this helps,
Erik mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Wed 12 Nov 2008 - 16:46:50 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 12 Nov 2008 - 17:30:25 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive