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

From: Wolfgang Huber <huber_at_ebi.ac.uk>
Date: Mon 14 Feb 2005 - 21:12:36 EST

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

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Received on Mon Feb 14 21:32:43 2005

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