Re: [Rd] sprintf

From: Prof Brian Ripley <ripley_at_stats.ox.ac.uk>
Date: Tue 15 Feb 2005 - 22:54:47 EST

sprintf() in R-devel is now vectorized, re-cycling its arguments, including fmt, as required.

On Tue, 15 Feb 2005, Wolfgang Huber wrote:

> Hi Peter,
>
> thanks. Yet my intention was not to discuss whether this could be done at all
> (never had any doubts about that), but how it could be done nicely and
> conveniently for the application programmer.
>
> Best regards
> Wolfgang
>
> Peter Dalgaard wrote:
>> Wolfgang Huber <huber@ebi.ac.uk> writes:
>>
>>
>>> Personally, I would prefer the recycling, but of course it can be also
>>> done this way:
>>>
>>> > mapply(sprintf, "%04d %s", 1:3, "abc")
>>> %04d %s <NA> <NA>
>>> "0001 abc" "0002 abc" "0003 abc"
>>>
>>> the only slightly unaesthetic thing being the names of the resulting
>>> vector.
>>
>>
>> ...which is of course fixable with either of
>>
>>
>>
>>> mapply(sprintf, MoreArgs=list(fmt="%04d %s"), 1:3, "abc")
>>
>> [1] "0001 abc" "0002 abc" "0003 abc"
>>
>>> mapply(sprintf, 1:3, "abc", fmt="%04d %s")
>>
>> [1] "0001 abc" "0002 abc" "0003 abc"
>>
>>> mapply(sprintf, "%04d %s", 1:3, "abc", USE.NAMES=FALSE)
>>
>> [1] "0001 abc" "0002 abc" "0003 abc"
>>
>> (Only the last one is completely failsafe since the first two relies
>> on 1:3 not being character:
>>
>> if (USE.NAMES && length(dots) && is.character(dots[[1]]) &&
>> is.null(names(answer)))
>> names(answer) <- dots[[1]]
>> )
>
>

-- 
Brian D. Ripley,                  ripley@stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Tue Feb 15 22:00:38 2005

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:02:52 EST