[R] R-level expansion of Rplot%03d.png

baptiste auguie baptiste.auguie at googlemail.com
Sat Aug 21 14:20:17 CEST 2010


I dunno, it doesn't seem to do it for me,

name = "Rplot%03d.png"
real.name = path.expand(name)
real.name
#[1] "Rplot%03d.png"
list.files(patt=".png")
#[1] "Rplot001.png"

sessionInfo()
R version 2.11.1 (2010-05-31)
i386-apple-darwin9.8.0

locale:
[1] en_GB.UTF-8/en_GB.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base



On 21 August 2010 14:15, kees duineveld <kees.duineveld at gmail.com> wrote:
> Now I understand. You need the name which png() does not return.
> So I think you need to do (untested, I am struggling with the cat()):
>
>
> makePlot = function(p, name="Rplot%03d", width=300)
> {
> real.name.png = path.expand(paste(name,'.png'sep='') # function needed here
> real.name.pdf = path.expand(paste(name,'.pdf'sep='') # function needed here
> png(real.name.png)
> print(p)
> dev.off()
> pdf(real.name.pdf)
> print(p)
> dev.off()
> cat(noquote(paste('image:',real.name.png,',width=',width,',link=real.name.pdf)
> }
>
> On Sat, 21 Aug 2010 14:02:04 +0200, baptiste auguie
> <baptiste.auguie at googlemail.com> wrote:
>
>> My function needs to do two things with the filename:
>>
>> First, create the plot file. For this, Rplot%03d is OK because it is
>> correctly interpreted by the graphics device.
>>
>> Second, generate a text string referring to this filename. This is
>> where I need to convert Rplot%03d to, say, Rplot001. I am assuming
>> that it is implemented internally by looking at the files in the
>> current directory with some regular expression search, and
>> incrementing the end number as needed. I wonder if there's a high
>> level function to perform this task.
>>
>> Best,
>>
>> baptiste
>>
>> On 21 August 2010 13:35, kees duineveld <kees.duineveld at gmail.com> wrote:
>>>
>>> Not sure what you want. Plot does that automatically. It seems to use
>>> path.expand() to make the %03d expansion. Not that path.expand() is
>>> documented to do this, but it seem to work.
>>>
>>> Kees
>>>
>>> On Sat, 21 Aug 2010 13:04:54 +0200, baptiste auguie
>>> <baptiste.auguie at googlemail.com> wrote:
>>>
>>>> Dear list,
>>>>
>>>> I'm using the brew package to generate a report containing various
>>>> plots. I wrote a function that creates a plot in png and pdf formats,
>>>> and outputs a suitable text string to insert the file in the final
>>>> document using the asciidoc syntax,
>>>>
>>>> <%
>>>> tmp <- 1
>>>> makePlot = function(p, name=paste("tmp",tmp,sep=""), width=300)
>>>> {
>>>> png(paste(name,".png",sep=""))
>>>> print(p)
>>>> dev.off()
>>>> pdf(paste(name,".pdf",sep=""))
>>>> print(p)
>>>> dev.off()
>>>>
>>>>
>>>> cat(noquote(paste('image:',name,'.png["',name,'",width=',width,',link="',name,'.pdf"]',sep="")))
>>>> tmp <<- tmp + 1
>>>> }
>>>> %>
>>>>
>>>> The resulting html file contains a thumbnail of the png file, with a
>>>> link to the pdf file.
>>>>
>>>> I'm not happy with my default filename for the graphics. Is there a
>>>> way to expand the default filename of R graphic devices? I would like
>>>> to call it like this,
>>>>
>>>>
>>>> makePlot = function(p, name="Rplot%03d", width=300)
>>>> {
>>>>
>>>> real.name = expandName(name) # function needed here
>>>> png(paste(name,".png",sep=""))
>>>> print(p)
>>>> dev.off()
>>>> pdf(paste(name,".pdf",sep=""))
>>>> print(p)
>>>> dev.off()
>>>>
>>>>
>>>> cat(noquote(paste('image:',real.name,'.png["',real.name,'",width=',width,',link="',real.name,'.pdf"]',sep="")))
>>>> }
>>>>
>>>>
>>>> Sincerely,
>>>>
>>>> baptiste
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>>
>>> --
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>
>
> --
> Using Opera's revolutionary email client: http://www.opera.com/mail/
>



More information about the R-help mailing list