Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-25 Thread Tomas Kalibera
Thanks, fixed in 72737 (R-devel). Best Tomas On 05/23/2017 06:32 PM, Evan Cortens wrote: Yes, what Joris posts about is exactly what I noted in my March 9th post to R-devel. The behaviour is sort of documented, but not in the clearest manner (in my opinion). Like I say, my ultimate conclusion

Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-23 Thread Evan Cortens
Yes, what Joris posts about is exactly what I noted in my March 9th post to R-devel. The behaviour is sort of documented, but not in the clearest manner (in my opinion). Like I say, my ultimate conclusion was that the silent coercion of numerics to integers by sprintf() was a handy convenience,

Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-23 Thread Michael Chirico
https://github.com/Rdatatable/data.table/issues/2171 The fix was easy, it's just surprising to see the behavior change almost on a whim. Just wanted to point it out in case this is unknown behavior, but Evan seems to have found this as well. On Tue, May 23, 2017 at 12:00 PM, Michael Chirico

Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-23 Thread Michael Chirico
Astute observation. And of course we should be passing integer when we use %d. It's an edge case in how we printed ITime objects in data.table: On Tue, May 23, 2017 at 11:53 AM, Joris Meys wrote: > I initially thought this is "documented behaviour". ?sprintf says: > >

Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-23 Thread Joris Meys
I initially thought this is "documented behaviour". ?sprintf says: Numeric variables with __exactly integer__ values will be coerced to integer. (emphasis mine). Turns out this only works when the first value is numeric and not NA, as shown by the following example: > sprintf("%d",

Re: [Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-23 Thread Evan Cortens
Hi Michael, I posted something on this topic to R-devel several weeks ago, but never got a response. My ultimate conclusion is that sprintf() isn't super consistent in how it handles coercion: sometimes it'll coerce real to integer without complaint, other times it won't. (My particular email had

[Rd] Inconsistency in handling of numeric input with %d by sprintf

2017-05-19 Thread Michael Chirico
Consider #as.numeric for emphasis sprintf('%d', as.numeric(1)) # [1] "1" vs. sprintf('%d', NA_real_) > Error in sprintf("%d", NA_real_) : invalid format '%d'; use format %f, %e, %g or %a for numeric object > I understand the error is correct, but if it works for other numeric input, why