Hi,
On 10/24/2014 06:58 AM, S Ellison wrote:
Also note that these warnings or errors are complaining that the
number of items to replace (left length) is not a multiple of
replacement length (right length). This suggests that when the left
length is a multiple of the right length, everything is fine.
And this is actually the case when the left length is 0. Because
0 is a multiple of anything. So in that case, the right value is
truncated to length 0 and no warning is issued. Makes sense to me.
Thanks Hervé, you gave the perfect explanation/rationale for this being
consistent.
This explains why a check for exact multiple of replacement length does not
trigger a warning, but surely that is not sensible in the length 0 case. In all
other cases, this check warns when there will be truncation of the replacement,
and that seems to me the sensible intent of the check. A silent truncation to
nothing is surely not the intended behaviour.
Yes truncation should not be silent. But truncation to length zero
should not be seen as a special case either. What would be more
sensible is that [<- recognizes the 2 distinct situations that
deserve a warning:
1. Truncation (i.e. when left length is < right length).
2. Left length is > right length AND left length is not a multiple
of right length.
Then the warning we get should be clear about which situation was
detected. So we would get a sensible warning all the time, even
when left length is 0.
H.
I can't help feeling that the 'check for multiple of length' was a neat
portmanteau check for several possible problems when recycling is allowed, but
that the possibility of assigning to a length 0 object was not considered.
I'd suggest logging it as an issue to for R-core to at least look at and either
to fix or to at least warn of in documentation.
S Ellison
*******************************************************************
This email and any attachments are confidential. Any u...{{dropped:26}}
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel