[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.
Try,
## 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
More information about the R-help
mailing list