[Rd] Request: kronecker to get a sep= argument

Ben Bolker bbolker at gmail.com
Mon Nov 29 14:59:09 CET 2010


Charles C. Berry <cberry <at> tajo.ucsd.edu> writes:

> 
> On Thu, 25 Nov 2010, Charles C. Berry wrote:
> 
> > On Thu, 25 Nov 2010, Michael Friendly wrote:
> >
> >>  kronecker, with make.dimnames=TRUE uses a hardwired sep=":" in the line
> >>
> >>             tmp <- outer(dnx[[i]], dny[[i]], FUN = "paste", sep = ":")
> >>
> >>  For an application in which dimnames arise from an n-way array, where
> >>  different dimensions have
> >>  different roles, and I would like to be able to use kronecker in the form
> >>
> >>  kronecker(A, B, make.dimnames=TRUE, sep='/')
> >>
> >>  All this requires is to change the following two lines:
> >>
> >>  kronecker <- function (X, Y, FUN = "*", make.dimnames = FALSE, sep=":"
> >>  ...)
> >>  {
> >>   ...
> >>             tmp <- outer(dnx[[i]], dny[[i]], FUN = "paste", sep = sep)
> >> }
> >> 
> >>

[snip]

> >
> > p.s. your suggestion could break code that others may have written like

[snip]

> kronecker( letters[1:3], diag(LETTERS[1:2]), paste )


  Of course, this could be fixed (if considered appropriate)

kronecker <- function (X, Y, FUN = "*", make.dimnames = FALSE, 
  name_sep=":", ...)
{
   tmp <- outer(dnx[[i]], dny[[i]], FUN = "paste", sep = name_sep)
}

  which could still break existing code in the unlikely event
that someone used a value of FUN with a 'name_sep' argument (much
less likely).  Perhaps the argument could be named .sep -- that
seems to be a standard convention in these cases for trying to
avoid previous/user-defined argument names.
  For whatever it's worth this seems like a good idea to me -- a 
small change that will increase flexibility with little cost.

  Ben Bolker



More information about the R-devel mailing list