--- "Liaw, Andy" <[EMAIL PROTECTED]> wrote: > From: John Kane > > > --- "Liaw, Andy" <[EMAIL PROTECTED]> 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().
Very simple when explained. Thanks very much. So then, all that } is doing is signifiying the end of { ? > > > 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 Given some of the responses in R-help a naive user like should perhaps be excused for thinking that some of the things are writen is a slightly esorteric manner. > > > > > > > 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: [EMAIL PROTECTED] > > > > [mailto:[EMAIL PROTECTED] 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" <[EMAIL PROTECTED]> > > > > # I added the t() > > > > t(as.data.frame(lapply(mylist, `[`, > > > > 1:max(unlist(lapply(mylist, > > > > length)))))) ______________________________________________ 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.