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. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.