[R] using functions with multiple arguments in the "apply" family

chipmaney chipmaney at hotmail.com
Wed Jan 27 20:40:21 CET 2010


typically, the apply family wants you to use vectors to run functions on. 
However, I have a function, kruskal.test, that requires 2 arguments.

kruskal.test(Herb.df$Score,Herb.df$Year)

This easily computes the KW ANOVA statistic for any difference across
years....

However, my data has multiple sites on which KW needs to be run...

here's the data:

Herb.df<-
data.frame(Score=rep(c(2,4,6,6,6,5,7,8,6,9),2),Year=rep(c(rep(1,5),rep(2,5)),2),Site=c(rep(3,10),rep(4,10)))

However, if I try this:

 tapply(Herb.df,Herb.df$Site,function(.data)
kruskal.test(.data$Indicator_Rating,.data$Year))


>Error in tapply(Herb.df, Herb.df$ID, function(.data)
kruskal.test(.data$Indicator_Rating,  : 
  arguments must have same length


How can I vectorize the kruskal.test() for all sites using tapply() in lieu
of a loop?




-- 
View this message in context: http://n4.nabble.com/using-functions-with-multiple-arguments-in-the-apply-family-tp1312027p1312027.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list