[R] srt --- slope text with function?
ivo welch
ivowel at gmail.com
Mon Feb 6 20:48:14 CET 2006
Thank you, as always.
May I disagree with you and offer a suggestion?
In the best of worlds, a function should have multiple attributes. In
addition to the function name and its argument list, two mandatory
attributes should be a filename and lineno. If the function is
interactively created, perhaps we can call the filename "-" and the
lineno a count that could come from the history(). Yes, it will
*NOT* be perfect, but it would be a big improvement.
If functions can have attributes, in addition to keeping the filename
and lineno, it would be great if it could have an immediate
association with a short documentation message? This could be a neat
documentation crutch, useful, e.g., in ls.str() or a describe(). the
best syntax that I can think of just stinks, but maybe a standard
argument does the job and should be encouraged.
xyz <- function(args, doc="xyz returns 0") { return(0); }
I do not think the following syntax would work stylewise:
xyz <- function "xyz returns 0" (args) { return(0); }
but it would be nicer in noting the difference between a normal
argument and a short function descriptor.
regards,
/iaw
by traceback(), do you mean the gdb() like traceback of the R
internals? This would not be too helpful to most users. I would be
more interested in my R call stack, not my underlying C call stack.
[and thanks again for all the other info].
regards,
/iaw
On 2/6/06, Prof Brian Ripley <ripley at stats.ox.ac.uk> wrote:
> 'Actually', R does what you ask it to: see options(error). But before the
> program stops, there is no error to report. In interactive use I see no
> problem in typing traceback() or using recover() (see below), but for
> batch use we are looking at alternatives. For example, in R 2.3.0
> (modern) Unix users will get a traceback after a segfault.
>
> > There's going to be a new section on debugging in the R 2.3.0 "Writing R
> > Extensions" manual (written by Brian Ripley). You can see it now if you
> > build R-devel (or download a binary build from CRAN; I put Windows
> > builds there approximately daily). I also put together a
> > Windows-oriented debugging page at
> > http://www.stats.uwo.ca/faculty/murdoch/software/debuggingR/.
>
> filename+lineno makes no sense: R functions are not (in the main) from
> files. They can be autogenerated (and often are). And I can 'fix' them.
>
> As for the call stack, try options(error=recover) and 'where': see the
> chapter Duncan pointed you to.
>
> >> * is there a way to print all my user defined functions? I have an
> >> init file, in which I am defining all sorts of useful utility
> >> functions, and I would like to print what I have defined (for memory)
> >> upon a read of this init file? that is, something that has
> >> functionality like
> >> note.all.local.definitions.now.in.vector( all.local.functions )
> >> a <- function() { }
> >> b <- function() { }
> >> cat( all.local.functions ); # should print 'a' and 'b'.
> >
> > ls.str() includes an option to select only functions. You could also
> > write your own filter for ls() output.
> >>
> >> * is there a string variable that gives me the name of the current
> >> function I am in?
> >
> > I don't think so, but sys.call() gets close. Watch out though: the
> > name you see will be the name used by the caller, which may not be the
> > name used when the function was written. For example, in a function
> > called from apply(), you'll see FUN, not the original name. Objects
> > don't know their own names in general, because they keep getting passed
> > around.
>
> In the debugging context the command 'where' tells you the sequence of
> calls (which can be more helpful).
>
> More generally, functions need not even have names (Bill Venables calls
> them 'anonymous functions'), as in
>
> r <- sapply(nms,
> function(n) if (exists(n, envir = envir, mode = mode))n
> else as.character(NA))
>
> from ls.str.
>
>
> --
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self)
> 1 South Parks Road, +44 1865 272866 (PA)
> Oxford OX1 3TG, UK Fax: +44 1865 272595
>
More information about the R-help
mailing list