[R] sprintf question

Greg Snow Greg.Snow at intermountainmail.org
Wed May 3 18:40:56 CEST 2006


You could finagle things with do.call (maybe right your own function
that does this if you will use it often).  Here is your example:

> v <- c(1, 2, -1.197114, 0.1596687)
> iv <- c(3, 1, 2, 4)
> tmp <- c(list("%9.2f\t%d\t%d\t%8.3f"),as.list(v[iv]))
> do.call('sprintf',tmp)
[1] "    -1.20\t1\t2\t   0.160" 

Hope this helps,

-- 
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at intermountainmail.org
(801) 408-8111
 

-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Paul Roebuck
Sent: Wednesday, May 03, 2006 10:32 AM
To: R Help Mailing List
Subject: [R] sprintf question

How would one go about getting sprintf to use the values of a vector
without having to specify each argument individually?

> v <- c(1, 2, -1.197114, 0.1596687)
> iv <- c(3, 1, 2, 4)
> sprintf("%9.2f\t%d\t%d\t%8.3f", v[3], v[1], v[2], v[4])
[1] "    -1.20\t1\t2\t   0.160"

Essentially, desired effect would be something like:
> sprintf("%9.2f\t%d\t%d\t%8.3f", v[iv]) # wish it worked

----------------------------------------------------------
SIGSIG -- signature too long (core dumped)

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list