[Rd] as.function()
Antonio, Fabio Di Narzo
antonio.fabio at gmail.com
Mon Jan 14 09:45:37 CET 2008
2008/1/14, Robin Hankin <r.hankin at noc.soton.ac.uk>:
> 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 at 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
More information about the R-devel
mailing list