Date: Sun, 12 Apr 1998 09:59:38 -0700 (PDT) From: Thomas Lumley <thomas@biostat.washington.edu> To: Bill Venables <wvenable@attunga.stats.adelaide.edu.au> Subject: Re: R-beta: S Compatibility (again) In-Reply-To: <9804120750.AA22905@attunga.stats.adelaide.edu.au> On Sun, 12 Apr 1998, Bill Venables wrote: > > 3. Language manipulation within R seems to be impossible. I > realise this may be a design limitation that nobody can do > anything about, but it may be worth noting. > > To be more specific, the R substitute() is much more limited > than the S version and coercion to mode "{", "call" or > "function" are unavailable, and function objects are not > subsetable. as.call is useless and as.function only exists to > issue a rather tetchy error message. > > For example, as far as I can see it is impossible to write a > version of the S function deriv() for R, short of getting down > to brass tacks and writing a new primitive into the base code, > but even then you can't extend it, of course. While language manipulation is much more limited than in S, you probably could write a version of deriv() (if it didn't already exist) since expressions can be manipulated quite well. eg R> a expression(sin(cos(x + 1))) R> a[[1]] sin(cos(x + 1)) R> a[[1]][[1]] sin R> a[[1]][[2]] cos(x + 1) R> a[[1]][[2]][[2]] x + 1 R> a[[1]][[2]][[2]][[1]] + R> a[[1]][[2]][[2]][[2]] x R> a[[1]][[2]][[2]][[3]] [1] 1 R> a[[1]][[1]]<-as.name("cos") R> a expression(cos(cos(x + 1))) Thomas Lumley ------------------------ Biostatistics Uni of Washington Box 357232 Seattle WA 98195-7232 ------------------------ -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-help-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._