Splitting a set of vectors in a list (Solved )
--- "Liaw, Andy" <andy_liaw at 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 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 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.
------------------------------------------------------------------------------
[[elided trailing spam]]