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 ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel