sys.function might be useful.

luke

On Tue, 23 Jun 2009, Duncan Murdoch wrote:

Martin Kober wrote:
I have an S4 object extending "function". Is it there a good way to
access the object (resp. its slots) from within the function in .Data?


I don't think so. That's not really the way the S4 object system is designed to work. If a function needs access to an object, the object should be one of the args to the function, or defined in its environment. Where the function happens to be stored is irrelevant.

Duncan Murdoch
If I'm reading help files correctly, it is not possible to overload
'(' (which would be the most elegant solution, I suppose).  I can
enclose the slotted data in the function when it is created, but that
obviously doesn't work when that data changes later on (also it
duplicates the data).

I tried to use the call stack, and this does seem to work:


setClass("abcd", representation(.Data="function", x="character"))
a = new("abcd",
.Data=function() str( get( as.character( sys.call()[[1]] ), pos=parent.frame() ) ),
    x="testtxt")
a()

Formal class 'abcd' [package ".GlobalEnv"] with 2 slots
  ..@ .Data:function (x)
  ..@ x    : chr "testtxt"

That is obviously a not-so-elegant hack, and I'm not sure it works
under all circumstances as I'm not an expert on R's call system.

Is there any better way to achieve this?

Thanks in advance
Martin

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
   Actuarial Science
241 Schaeffer Hall                  email:      l...@stat.uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to