[R] creating a file of p.values

Erik Iverson iverson at biostat.wisc.edu
Wed Nov 12 17:43:06 CET 2008

Hello -

lave0083 at umn.edu 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,

More information about the R-help mailing list