Antonio
thanks for your help here, but it doesn't answer my question. Perhaps if I outline my motivation it would help. I want to recreate the ability of the "polynom" package to do the following: > library(polynom) > p <- polynomial(1:4) > p 1 + 2*x + 3*x^2 + 4*x^3 > MySpecialFunction <- as.function(p) > MySpecialFunction(1:10) [1] 10 49 142 313 586 985 1534 2257 3178 4321 > p <- 4 > MySpecialFunction(1:10) [1] 10 49 142 313 586 985 1534 2257 3178 4321 > See how the user can define object "MySpecialFunction", which outlives short-lived polynomial "p". Unfortunately, I don't see a way to modify as.function.polynomial() to do what I want. best wishes rksh On 14 Jan 2008, at 08:45, Antonio, Fabio Di Narzo wrote: > 2008/1/14, Robin Hankin <[EMAIL PROTECTED]>: >> Hi >> >> [this after some considerable thought as to R-help vs R-devel] >> >> >> >> I want to write a (S3) method for as.function(); >> toy example follows. >> >> Given a matrix "a", I need to evaluate trace(ax) as a function of >> (matrix) "x". >> >> Here's a trace function: >> >> tr <- function (a) { >> i <- seq_len(nrow(a)) >> return(sum(a[cbind(i, i)])) >> } >> >> >> How do I accomplish the following: >> >> >> a <- crossprod(matrix(rnorm(12),ncol=3)) >> class(a) <- "foo" >> >> f <- as.function(a) # need help to write as.function.foo() >> x <- diag(3) >> >> f(x) #should give tr(ax) > > What about the following? > > as.function.foo <- function(a, ...) > function(x) > sum(diag(a*x)) > > However, I don't see the need for an S3 method. Why don't simply use > (?): > mulTraceFun <- function(a) > function(x) > sum(diag(a*x)) > > So you also have a more meaningful name than an anonymous > 'as.function'. > > HTH, > Antonio. > >> >> a <- 4 >> f(x) # should still give tr(ax) even though "a" has been >> reassigned. > > This would'nt work with my proposal, because of lexical scoping. > >> >> >> >> >> >> [my real example is very much more complicated than this but >> I need this toy one too and I can't see how to modify >> as.function.polynomial() >> to do what I want] >> >> >> >> >> -- >> Robin Hankin >> Uncertainty Analyst and Neutral Theorist, >> National Oceanography Centre, Southampton >> European Way, Southampton SO14 3ZH, UK >> tel 023-8059-7743 >> >> ______________________________________________ >> R-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> > > > -- > Antonio, Fabio Di Narzo > Ph.D. student at > Department of Statistical Sciences > University of Bologna, Italy -- Robin Hankin Uncertainty Analyst and Neutral Theorist, National Oceanography Centre, Southampton European Way, Southampton SO14 3ZH, UK tel 023-8059-7743 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel