On 05/05/2014, 1:02 AM, Spencer Graves wrote:
        Is there a standard function to generate messages like "longer
object length is not a multiple of shorter object length" but providing
more information like the names of the objects?

No, not really.

At the C level objects don't really have names. The same object may be linked to several different names, or none at all. Most messages like the length warning are generated there, so they don't include name information.

At the R level you can use substitute() to find the expression that was used to supply a function argument, so you can do a little better. For example, I would write a simpler version of your compareLengths function something like this:

compareLengths <- function(x, y, name.x = deparse(substitute(x)),
                                 name.y = deparse(substitute(y))) {
  if (length(x) == length(y))
return( c("equal", paste("objects", dQuote(name.x), "and", dQuote(name.y), "are the same length."))
  else ...

}

Then a function could call it like this:

f <- function(a, b) {
  cmp1 <- compareLengths(a, b)  # Message talks about  "a" and "b"
  cmp2 <- compareLengths(a, b, deparse(substitute(a)),
             deparse(substitute(b))) # Message talks about names
                                     # in call to f
  ...
}

Duncan Murdoch



        For example, "a/b" issues, "Warning message:  In a/b : longer
object length is not a multiple of shorter object length" if the length
of one is not a multiple of the other.  I want a utility to produce
messages that include the lengths of "a" and "b" and other information.


        If you were to write such a function, what would you include in
it?  Arguments?  Values?  Options?


        I started creating "compareLengths.Rd" with
\usage{compareLengths(x, y, name.x=NULL, name.y=NULL, Source='',
compFun=c('length', 'NROW'), action=c(comparable='',
incomparable='warning'), maxChar=20, ...)} and \value{A character vector
of length 2.  The first element is either 'equal', 'compatible' or
'incompatible'.  The second element is the message composed for the
desired "action".


        Thanks,
        Spencer Graves

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to