On Thu, May 2, 2013 at 12:35 AM, philchalmers <rphilip.chalm...@gmail.com> wrote: > Hi All, > > I'm wondering why when passing a single numeric value that contains any > decimals to diag() that the value is silently coerced to a integer for > constructing an identify matrix. To me, an input like diag(5.435) seems > fairly ambiguous and is more than likely a programming mistake, since it's > not obvious that a 5x5 identity matrix should be created. I've seen some > code where other writers have been burned on this as well, especially when > trying extract diagonal elements but forget about the scalar case. A warning > or message would help track this problem down really quickly to force the > author to use diag(floor(5.435)) explicitly, if indeed that is there > intention. Thoughts? >
I agree it's probably rather dangerous, but it does seem consistent with much of R: matrix(0, ncol = 3.5) replicate(2.525, rnorm(3)) etc. So would you propose a global change (the oft talked about "strict mode") of R or just here? Either way, does this play nicely with R's goals of having integers and floats behave more or less interchangeably? That said, I'm slightly confused by a bit of your message: are you conflating the rounding to integer issue with the different behavior for scalars issue (same as with sample())? Michael ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel