Re: [R] Splitting a set of vectors in a list (Solved )

From: Liaw, Andy <andy_liaw_at_merck.com>
Date: Fri, 14 Mar 2008 13:51:56 -0400

From: John Kane  

> --- "Liaw, Andy" <andy_liaw@merck.com> wrote:
>
> > From: Bert Gunter
> >
> > > ?"[" ?InternalMethods
> > >
> > > x[i,j] is just shorthand for "["(x,i,j) .
> > (AFAIK)**All** operators
> > > (+,-,...,subscripting,...) in R are functions,
> > stemming from
> > > its LISP-like
> > > heritage, and can actually called by the usual
> > functional
> > > syntax, f(...),
> > > instead of the operator syntax.
> >
> > That is true even for assignment:
> >
> > R> "<-"(junk, 1:3)
> > R> junk
> > [1] 1 2
> Okay I think I've got this one but
>
> > and "{":
> >
> > R> "{"(1, 2, 3)
> this defeats me. I see what it is doing but I have not
> the slightest idea why .
>
> I had a look at ?"{" and if I am understanding the
> example {2+3; 4+5} what is happening is that anything
> within the {} is being executed as separate statments
> but I have not the slightest idea of what is happening
> when "{"(1, 2, 3) returns 3.

The value of "{" is simply the last statement inside. This is basically the reason why when one writes a function, one can simply type the name of the object (or the expression) to be returned as the last line, instead of having to wrap that in return().

> The other thing is, is it worth trying to figure out
> what appears to be rather esotheric coding if I can do
> the same with more intuitively understood albeit
> clumsier code?

I do not believe anyone in his/her right mind would write code that way (except those with very developed left brain that can code in LISP-like languages). To me the point is more about understanding what these things do, so you can use them in perhaps some creative ways (but not to the point of abusing it, of course).

Andy  

> >
> > I believe this is in the (draft) R Language
> > Definition, part of the
> > official manuals that shipped with R.
> >
> > Andy
> >
> > > Not sure where this is explicitly discussed within
> > R's
> > > documentation, but
> > > you can find info on it in V&R's "S Programming",
> > esp. p.24 and 4.3,
> > > "Extracting or replacing coefficients".
> > >
> > > No doubt, other S/R books explain it also.
> > >
> > > Cheers,
> > >
> > > Bert Gunter
> > > Genentech Nonclinical Statistics
> > > 47374
> > >
> > >
> > > -----Original Message-----
> > > From: r-help-bounces_at_r-project.org
> > > [mailto:r-help-bounces_at_r-project.org] On
> > > Behalf Of John Kane
> > > Sent: Thursday, March 13, 2008 11:53 AM
> > > To: Henrique Dallazuanna
> > > Cc: R R-help
> > > Subject: Re: [R] Splitting a set of vectors in a
> > list (Solved )
> > >
> > > My thanks to Henrique Dallazuanna and Phil
> > Spector.
> > > Both solutions worked well.
> > > Phil suggested that an alterative to my function
> > would
> > > be
> > > vect1 = sapply(mylist,'[[',1)
> > > and I see that Henrique used `[` in his solution.
> > >
> > > Can you point me to some documentation that
> > discusses
> > > these usages. I have seen them before but I have
> > never
> > > actually figured out how to use them.?
> > >
> > > Thanks.
> > >
> > > Problem and solutions
> > >
> >
> ========================================================
> > > mylist <- list(aa=c("cat","peach" ), bb=c("dog",
> > > "apple", "iron"),
> > > cc = c("rabbit", "orange", "zinc",
> > "silk"))
> > > myfun <- function(dff) dff[1]
> > > vect1 <- unlist(lapply(mylist, myfun))
> > >
> > > # Desired output
> > > t(cbind( c("cat" , "peach" , NA, NA), bbb <-
> > c("dog"
> > > , "apple" ,"iron", NA),
> > > ccb <- c("rabbit" ,"orange" ,"zinc" , "silk" )))
> > >
> > > # Phil Spector's approach
> > > mlen = max(sapply(mylist,length))
> > > eqlens = lapply(mylist,function(x)if(length(x) <
> > mlen)
> > >
> > > c(x,rep('',mlen-length(x))) else x)
> > > do.call(rbind,eqlens)
> > >
> > > # "Henrique Dallazuanna" <wwwhsd_at_gmail.com>
> > > # I added the t()
> > > t(as.data.frame(lapply(mylist, `[`,
> > > 1:max(unlist(lapply(mylist,
> > > length))))))
> > >
> > >
> > > [[elided trailing spam]]
> > >
> > > ______________________________________________
> > > R-help_at_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.
> > >
> > > ______________________________________________
> > > R-help_at_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.
> > >
> > >
> > >
> >
> >
> >
> --------------------------------------------------------------
> ----------------
> > Notice: This e-mail message, together with any
> > attachments, contains
> > information of Merck & Co., Inc. (One Merck Drive,
> > Whitehouse Station,
> > New Jersey, USA 08889), and/or its affiliates (which
> > may be known
> > outside the United States as Merck Frosst, Merck
> > Sharp & Dohme or MSD
> > and in Japan, as Banyu - direct contact information
> > for affiliates is
> > available at
> > http://www.merck.com/contact/contacts.html) that may
> > be
> > confidential, proprietary copyrighted and/or legally
> > privileged. It is
> > intended solely for the use of the individual or
> > entity named on this
> > message. If you are not the intended recipient, and
> > have received this
> > message in error, please notify us immediately by
> > reply e-mail and then
> > delete it from your system.
> >
> >
> --------------------------------------------------------------
> ----------------
> >
>
>
>
> Looking for the perfect gift? Give the gift of Flickr!
>
> http://www.flickr.com/gift/
>
>
>
>



Notice: This e-mail message, together with any attachme...{{dropped:15}}

R-help_at_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. Received on Fri 14 Mar 2008 - 18:03:19 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 14 Mar 2008 - 18:30:22 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive