[Rd] sprintf - was formatC with illegal input crashes Rgui (PR#7686)

Wolfgang Huber huber at ebi.ac.uk
Mon Feb 14 11:12:36 CET 2005


Prof Brian Ripley wrote:
> On Mon, 14 Feb 2005, Wolfgang Huber wrote:
> 
>> Dear Prof. Ripley,
>>
>> Would it be possible to make sprintf accept vector arguments?
>> I.e. allow expressions like
>>  sprintf("%04d", 1:3)
>> to produce something like what currently needs to be done via
>>  sapply(1:3, function(i) sprintf("%04d",i))
> 
> 
> I have thought about this, but it is not really clear what the right 
> thing would be here with multiple arguments.  What should
> 
> sprintf(("%04d %s", 1:3, "abc")
> 
> do?  Produce a character vector of length 1 or 3?  If of length 1,
> "0001 0002 0003 abc" or "0001 2 0003 abc"?
> 
> I guess the most R-like thing would be to recycle args to the length of 
> the longest and then use them in parallel, but that can be done fairly 
> easily by *apply.

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.

-- 
Best regards
   Wolfgang

-------------------------------------
Wolfgang Huber
European Bioinformatics Institute
European Molecular Biology Laboratory
Cambridge CB10 1SD
England
Phone: +44 1223 494642
Fax:   +44 1223 494486
Http:  www.ebi.ac.uk/huber



More information about the R-devel mailing list