[R] getting t.test to work with apply()
ONKELINX, Thierry
Thierry.ONKELINX at inbo.be
Mon Jun 4 15:43:53 CEST 2007
Apply passes the row as a vector, not as a dataframe. So you need to remove the colons in x[, alive] and x[, dead]
results <-apply(raw.sample,1,function(x) t.test(x[alive],x[dead]))
Cheers,
Thierry
----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Reseach Institute for Nature and Forest
Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium
tel. + 32 54/436 185
Thierry.Onkelinx op inbo.be
www.inbo.be
Do not put your faith in what statistics say until you have carefully considered what they do not say. ~William W. Watt
A statistical analysis, properly conducted, is a delicate dissection of uncertainties, a surgery of suppositions. ~M.J.Moroney
> -----Oorspronkelijk bericht-----
> Van: r-help-bounces op stat.math.ethz.ch
> [mailto:r-help-bounces op stat.math.ethz.ch] Namens Andrew Yee
> Verzonden: maandag 4 juni 2007 15:34
> Aan: Peter Dalgaard
> CC: r-help op stat.math.ethz.ch
> Onderwerp: Re: [R] getting t.test to work with apply()
>
> Thanks for everyone's suggestions.
>
> I did try
>
> results <-apply(raw.sample,1,function(x) t.test(x[,alive],x[,dead]))
>
> However, I get:
>
> "Error in x[, alive] : incorrect number of dimensions"
>
> Full disclosure, raw.sample is a data.frame, and I am using
> alive and dead as indexing vectors.
>
> On the other hand, the lapply suggestion works better.
>
> results <- lapply(1:nrow(raw.sample), function(i) t.test(raw.sample
> [i,alive],raw.sample[i,dead]))
>
> Thanks,
> Andrew
>
>
> On 6/4/07, Peter Dalgaard <P.Dalgaard op biostat.ku.dk> wrote:
>
> > Petr Klasterecky wrote:
> > > Andrew Yee napsal(a):
> > >
> > >> Hi, I'm interested in using apply() with t.test() on a
> data.frame.
> > >>
> > >> Specifically, I'd like to use apply() to do the following:
> > >>
> > >> t.test(raw.sample[1,alive],raw.sample[1,dead])
> > >> t.test(raw.sample[2,alive],raw.sample[2,dead])
> > >> t.test(raw.sample[3,alive],raw.sample[3,dead])
> > >> etc.
> > >>
> > >> I tried the following,
> > >>
> > >> apply(raw.sample,1,function(x)
> t.test(raw.sample[,alive],raw.sample
> > [,dead]))
> > >>
> > >
> > > Two comments:
> > > 1) apply() works on arrays. If your dataframe only has numeric
> > > values, turn it (or its copy) to a matrix via
> as.matrix(). If it has
> > > mixed variables, take only the numeric part for t-tests. The
> > > conversion is made implicitly but explicit asking for it
> cannot hurt.
> > > 2) the main problem - you are using a wrong argument to t.test
> > >
> > > The call should look like
> > > apply(as.matrix(raw.sample), 1, function(x){t.test(x[alive],
> > > x[dead])})
> > >
> > > assuming 'alive' and 'dead' are logical vectors of the
> same length
> > > as
> > 'x'.
> > >
> > > Petr
> > >
> > Notice also that the other apply-style functions may give an easier
> > route to the goal:
> >
> > lapply(1:N, function(i)
> > t.test(raw.sample[i,alive],raw.sample[i,dead]))
> >
> > or (maybe, depends on raw.sample being a data frame and alive/dead
> > being indexing vectors)
> >
> > mapply(t.test, raw.sample[,alive], raw.sample[,dead])
> >
> > >
> > >> but it gives me a list of identical results.
> > >>
> > >>
> > >> Thanks,
> > >> Andrew
> > >>
> > >> [[alternative HTML version deleted]]
> > >>
> > >> ______________________________________________
> > >> R-help op stat.math.ethz.ch 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.
> > >>
> > >>
> > >
> > >
> >
> >
> > --
> > O__ ---- Peter Dalgaard Øster Farimagsgade 5, Entr.B
> > c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K
> > (*) \(*) -- University of Copenhagen Denmark Ph: (+45)
> > 35327918
> > ~~~~~~~~~~ - (p.dalgaard op biostat.ku.dk) FAX: (+45)
> > 35327907
> >
> >
>
> [[alternative HTML version deleted]]
>
>
More information about the R-help
mailing list