[R] does pdf() work inside of a function?

Berwin A Turlach berw|n@tur|@ch @end|ng |rom gm@||@com
Mon Jul 29 06:21:54 CEST 2019


G'day Anuj,

On Sun, 28 Jul 2019 16:40:28 -0700
Anuj Goyal <anuj.goyal using gmail.com> wrote:

> Why does pdf() work outside a function, but not inside it?

Because you use a graphics system that need printing to produce the
plot.  On the command line auto-printing is your friend, but in
functions you have to do it explicitly yourself.

> R version 3.6.0 (2019-04-26) on Mac 10.14.5
> 
> # R --silent --vanilla < s2.r
> library(quantmod)
> options("getSymbols.warning4.0"=FALSE)
> options("getSymbols.yahoo.warning"=FALSE)
> 
> gs <- function(f) {
>   csvText <- "s,n\nAFL,AFLAC\nAIG,AIG"
>   csv <- read.csv(text=csvText, stringsAsFactors = FALSE)
>   symVec <- getSymbols(as.vector(csv$s))
> 
>   # create PDF
>   fname = paste0(f,".pdf")
>   pdf(file = fname)
>   par(mfrow = c( 4,2 ) )
>   mapply (chart_Series, mget(symVec))

Change this to

    mapply( function(x) print(chart_Series(x)), mget(symVec))

and it should work.  At least it does on my machine:

  -rw-r--r--  1 berwin berwin 154281 Jul 29 12:19 t.pdf


Cheers,
	
	Berwin



More information about the R-help mailing list