Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
survey.write <- function(x) {
+ print(match.call())
+ x
+ }
out <- survey.write(pi+3)
That's exactly what I need. Thank you.
But now, another question. I can't seem to get the value returned by
print() into a character variable. I tried examining the relevant print
function, to see what it's printing, but there seems not to be a
print.call(). This is not fatal, since I can use print(), but is there
some obvious way to do this? as.character doesn't do it.
More generally, is there a way to inspect an object of some class I
don't know about to find its members and methods? I suspect that will
save me some posts like this in the future.
Thanks,
-tom
On Dec 2, 2007 6:55 PM, tom sgouros <tomfool at as220.org> wrote:
Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
If what you mean is that you have a file, test.R, of R commands
and you are using source("test.R") and you wish to discover the
name "test.R" without hard coding it in your file, then place this in
test.R:
ofile <- parent.frame(2)$ofile
and ofile will be set to "test.R". Note that the line shown should not
be within a function or other local environment within the file but
directly at top level.
Thank you, that is an excellent hack, and I will use it carefully
(though often), but it isn't quite what I had in mind.
In my script called test.R, there is a function called "survey.write",
which writes a report based on some survey results. It is called
several times at the top level. I would like the report to say how
"survey.write" was invoked, whether it was invoked as
"survey.write(res.raw,res.q)" or "survey.write(bus.raw,bus.q)".
Obviously I have access to the values of the arguments, but I want the
names of those arguments, or a string containing it all.
Thanks,
-tom
This is hack which may need to be modified if the internals of the
source command change.
On Dec 2, 2007 6:24 PM, Tom Sgouros <tomfool at as220.org> wrote:
Hello all:
I have a function that writes a fairly elaborate report based on some
survey data. For documentation and bookkeeping purposes, I'd like to
write out in the report the function call that produced the report, or
at least enough information to help me recreate the steps that led to
that report. I've been generating all the reports with scripts, in
order to be able to recreate the steps, but apart from the file name, I
don't yet have a way to match the report to the script that created it.
Can anyone suggest easy ways to do this? From within a function, is the
function call text available somehow, or the names of the arguments used
in the function invocation?
Many thanks,
-tom
--
------------------------
tomfool at as220 dot org
http://sgouros.com
http://whatcheer.net