[R] sapply question
Liaw, Andy
andy_liaw at merck.com
Wed Jun 28 20:14:30 CEST 2006
Here's an example, using a data frame with two variables plus a grouping
factor:
> (dat <- data.frame(x1=1:10, x2=10:1, g=gl(2, 5)))
x1 x2 g
1 1 10 1
2 2 9 1
3 3 8 1
4 4 7 1
5 5 6 1
6 6 5 2
7 7 4 2
8 8 3 2
9 9 2 2
10 10 1 2
Now, I want to compute 2 * x1 + x2 for each group in g:
> sapply(split(dat, dat$g), function(d) 2 * d$x1 + d$x2)
1 2
[1,] 12 17
[2,] 13 18
[3,] 14 19
[4,] 15 20
[5,] 16 21
Does that help?
Andy
From: Afshartous, David
>
> Andy,
> My apologies for my very poor email. Below is some simplified code.
> I think my confusion has more to do w/ embedding the sapplpy
> within another function and returning the result, thus this
> would apply to your "split" suggestion as well.
> However, when I run this the result is still empty.
> thanks!
> dave
>
>
> creatine.function.new.3 = function(dat) {
> result = sapply(levels(dat$Patient_no), function(i)
> {
> subdat <- subset(dat, dat$Patient_no==i)
> U = subdat$UV
> r = numeric(6)
> for (i in 1:6) {
> r[i] = 2*U[i]
> }
> r ## results for each patient
> }
> )
> result
> }
>
>
> -----Original Message-----
> From: Liaw, Andy [mailto:andy_liaw at merck.com]
> Sent: Wednesday, June 28, 2006 10:23 AM
> To: Afshartous, David; r-help at stat.math.ethz.ch
> Subject: RE: [R] sapply question
>
> If you attached files, none made it through the mailing list.
>
> Can't you try posting a simplified version of the problem
> instead? Try
> to make it as easy for others to help you as possible will
> maximize the
> chance you get some useful response. Asking people to read
> code you've
> attached in files isn't helping, especially if the code is
> long and make
> use of data not accessible to anyone but you.
>
> In general, if you want something like tapply, but need several
> variables instead of one, you can use something like:
>
> sapply(split(dataFrame, factor_to_split_by), function(...))
>
> HTH,
> Andy
>
> From: Afshartous, David
> >
> > sent this to the list yesterday but didn't see it listed in
> the daily
> > summary ... apologies if you receive it twice ...
> >
> > ________________________________
> >
> > From: Afshartous, David
> > Sent: Tuesday, June 27, 2006 10:02 AM
> > To: 'r-help at stat.math.ethz.ch'
> > Subject: sapply question
> >
> >
> > All:
> >
> > I'm trying to use sapply to break up data within another function.
> > (tapply doens't seem to work since I want to access several
> variables
> > of a data set, not just break up a single variable according to a
> > factor.) I tried the R documentation but that wasn't much help on
> > this.
> >
> > The first function in the attached file works, breaking up the data
> > according to patient number (6 observations per 24
> patients) via a for
>
> > loop i=1,..24.
> >
> > The second function is an attempt to use sapply instead of the first
> > "for loop".
> > it doesn't load properly and I seem to be absolutely blind
> as to why;
> > my guess is that it's something "obvious". any help appreciated.
> > (necessary data
> > attached)
> >
> > thanks!
> > dave
> >
> > ps:
> > I'm on windows and,
> > r.2 =100 (input to function)
> > dat = comp.CAND.frm (attached file)
> >
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help at 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
> >
> >
>
>
> --------------------------------------------------------------
> ----------
> ------
> Notice: This e-mail message, together with any attachment...{{dropped}}
More information about the R-help
mailing list