0

Usually when we type par() on console it will give a list of all default parameters of par function. But what about plot, when I try plot() it gives an error. What is different about functions such as this.

Does it have something to do with it being generic function. Please point to any resource I can read up on this.

emperorspride188
  • 819
  • 1
  • 8
  • 13
  • 1
    `help("par")`: "par can be used to set or **query** graphical parameters." `help("plot")`: "Generic function for plotting of R objects." – Roland Aug 16 '16 at 06:50
  • A similar question has been discussed in the comments here: http://stackoverflow.com/q/38958236/4770166 – RHertel Aug 16 '16 at 06:58

1 Answers1

3

Example, using args() and formalArgs() or formals() function to know the list of arguments in a function.

I. Using args()

    args(qplot)
    # function (x, y = NULL, ..., data, facets = NULL, margins = FALSE, 
    #     geom = "auto", xlim = c(NA, NA), ylim = c(NA, NA), log = "", 
    #     main = NULL, xlab = deparse(substitute(x)), ylab = deparse(substitute(y)), 
    #     asp = NA, stat = NULL, position = NULL) 
    # NULL

II. Using formalArgs()

    formalArgs(qplot)
    #  [1] "x"        "y"        "..."      "data"     "facets"   "margins"  "geom"     "xlim"     "ylim"     "log"     
    # [11] "main"     "xlab"     "ylab"     "asp"      "stat"     "position"

III. Using formals()

   formals(qplot)
   # $x


   # $y
   NULL

   # $...


   # $data


   # $facets
   # NULL

   # $margins
   # [1] FALSE

   # $geom
   # [1] "auto"

   # $xlim
   # c(NA, NA)

   # $ylim
   # c(NA, NA)

   # $log
   # [1] ""

   # $main
   # NULL

   # $xlab
   # deparse(substitute(x))

   # $ylab
   # deparse(substitute(y))

   # $asp
   # [1] NA

   # $stat
   # NULL

   # $position
   # NULL

Then to check, type ?qplot in R Console and check in the help page whether it has the same arguments.

IV. Analysis on par() and some other similar kind of functions like options()

  class(par)
  # [1] "function"
  class(par())
  # [1] "list"
  class(plot)
  # [1] "function"
  class(plot())
  # Error in xy.coords(x, y, xlabel, ylabel, log) : 
  #   argument "x" is missing, with no default

  names(par())
  #  [1] "xlog"      "ylog"      "adj"       "ann"       "ask"       "bg"        "bty"       "cex"       "cex.axis" 
  # [10] "cex.lab"   "cex.main"  "cex.sub"   "cin"       "col"       "col.axis"  "col.lab"   "col.main"  "col.sub"  
  # [19] "cra"       "crt"       "csi"       "cxy"       "din"       "err"       "family"    "fg"        "fig"      
  # [28] "fin"       "font"      "font.axis" "font.lab"  "font.main" "font.sub"  "lab"       "las"       "lend"     
  # [37] "lheight"   "ljoin"     "lmitre"    "lty"       "lwd"       "mai"       "mar"       "mex"       "mfcol"    
  # [46] "mfg"       "mfrow"     "mgp"       "mkh"       "new"       "oma"       "omd"       "omi"       "page"     
  # [55] "pch"       "pin"       "plt"       "ps"        "pty"       "smo"       "srt"       "tck"       "tcl"      
  # [64] "usr"       "xaxp"      "xaxs"      "xaxt"      "xpd"       "yaxp"      "yaxs"      "yaxt"      "ylbias"   

par() is a functions which has list of parameters, whichever parameter you specify those will be stored inside par() and in turn will effect the plot, the rest parameter has its own default set.

Similar kind of function options()

  class(options)
  # [1] "function"
  class(options())
  # [1] "list"

  head(names(options()))    # List is bigger, just printing head of it
  # [1] "add.smooth"          "browserNLdisabled"   "CBoundsCheck"        "check.bounds"        "citation.bibtex.max"
  # [6] "continue" 

Calling options() like par()

  options()
  $add.smooth
  # [1] TRUE

  # $browserNLdisabled
  # [1] FALSE

  # $CBoundsCheck
  # [1] FALSE

  # $check.bounds
  # [1] FALSE

  # $citation.bibtex.max
  # [1] 1

  # $continue
  # [1] "+ "

  # $contrasts
  #         unordered           ordered 
  # "contr.treatment"      "contr.poly" 

  # $defaultPackages
  # [1] "datasets"  "utils"     "grDevices" "graphics"  "stats"     "methods"  

  # $demo.ask
  # [1] "default"

  # $deparse.cutoff
  # [1] 60

  # $device
  # function (width, height, pointsize, record, rescale, xpinch, 
  #     ypinch, bg, canvas, gamma, xpos, ypos, buffered, title, restoreConsole, 
  #     clickToConfirm, fillOddEven, family = "", antialias) 
  # {
  #     check <- Sys.getenv("_R_CHECK_SCREEN_DEVICE_", "")
  #     msg <- "screen devices should not be used in examples etc"
  #     if (identical(check, "stop")) 
  #         stop(msg, domain = NA)
  #     else if (identical(check, "warn")) 
  #         warning(msg, immediate. = TRUE, noBreaks. = TRUE, domain = NA)
  #     new <- list()
  #     if (!missing(width)) 
  #         new$width <- as.double(width)
  #     if (!missing(height)) 
  #         new$height <- as.double(height)
  #     if (!missing(pointsize)) 
  #         new$pointsize <- as.double(pointsize)
  #     if (!missing(record)) 
  #         new$record <- record 
  #     if (!missing(rescale)) 
  #         new$rescale <- rescale
  #     if (!missing(xpinch)) 
  #         new$xpinch <- as.double(xpinch)
  #     if (!missing(ypinch)) 
  #         new$ypinch <- as.double(ypinch)
  #     if (!missing(bg)) 
  #         new$bg <- bg
  #     if (!missing(canvas)) 
  #         new$canvas <- canvas
  #     if (!missing(gamma)) 
  #         new$gamma <- gamma
  #     if (!missing(xpos)) 
  #         new$xpos <- as.integer(xpos)
  #     if (!missing(ypos)) 
  #         new$ypos <- as.integer(ypos)
  #     if (!missing(buffered)) 
  #         new$buffered <- buffered
  #     if (!missing(title)) 
  #         new$title <- title
  #     if (!missing(restoreConsole)) 
  #         new$restoreConsole <- restoreConsole
  #     if (!missing(clickToConfirm)) 
  #         new$clickToConfirm <- clickToConfirm
  #     if (!missing(fillOddEven)) 
  #         new$fillOddEven <- fillOddEven
  #     if (!missing(antialias)) 
  #         new$antialias <- match.arg(antialias, aa.win)
  #     d <- check.options(new = new, envir = .WindowsEnv, name.opt = ".Windows.Options", 
  #         reset = FALSE, assign.opt = FALSE)
  #     rescale <- match(d$rescale, c("R", "fit", "fixed"))
  #     if (is.na(rescale)) 
  #         stop("invalid value for 'rescale'")
  #     antialias <- pmatch(d$antialias, aa.win)
  #     invisible(.External(C_devga, "", d$width, d$height, d$pointsize, 
  #         d$record, rescale, d$xpinch, d$ypinch, d$canvas, d$gamma, 
  #         d$xpos, d$ypos, d$buffered, .PSenv, d$bg, d$restoreConsole, 
  #         d$title, d$clickToConfirm, d$fillOddEven, family, antialias))
  # }
  # <bytecode: 0x0000000015330530>
  # <environment: namespace:grDevices>

  # $device.ask.default
  # [1] FALSE

  # $digits
  # [1] 7

  # $echo
  # [1] TRUE

  # $editor
  # [1] "internal"

  # $encoding
  # [1] "native.enc"

  # $example.ask
  # [1] "default"

  # $expressions
  # [1] 5000

  # $help.search.types
  # [1] "vignette" "demo"     "help"    

  # $help.try.all.packages
  # [1] FALSE

  # $help_type
  # [1] "html"

  # $HTTPUserAgent
  # [1] "R (3.3.0 x86_64-w64-mingw32 x86_64 mingw32)"

  # $install.packages.compile.from.source
  # [1] "interactive"

  # $internet.info
  # [1] 2

  # $keep.source
  # [1] TRUE

  # $keep.source.pkgs
  # [1] FALSE

  # $lme4.summary.cor.max
  # [1] 12

  # $locatorBell
  # [1] TRUE

  # $mailer
  # [1] "mailto"

  # $max.print
  # [1] 99999

  # $menu.graphics
  # [1] TRUE

  # $mgcv.vc.logrange
  # [1] 25

  # $na.action
  # [1] "na.omit"

  # $nwarnings
  # [1] 50

  # $OutDec
  # [1] "."

  # $pager
  # [1] "internal"

  # $papersize
  # [1] "letter"

  # $pdfviewer
  # [1] "C:/PROGRA~1/R/R-33~1.0/bin/x64/open.exe"

  # $pkgType
  # [1] "both"

  # $prompt
  # [1] "> "

  # $repos
  #                                        CRAN                                    CRANextra 
  # "https://mirrors.tuna.tsinghua.edu.cn/CRAN"        "http://www.stats.ox.ac.uk/pub/RWin" 

  # $scipen
  # [1] 0

  # $show.coef.Pvalues
  # [1] TRUE

  # $show.error.messages
  # [1] TRUE

  # $show.signif.stars
  # [1] TRUE

  # $str
  # $str$strict.width
  # [1] "no"

  # $str$digits.d
  # [1] 3

  # $str$vec.len
  # [1] 4


  # $str.dendrogram.last
  # [1] "`"

  # $stringsAsFactors
  # [1] TRUE

  # $timeout
  # [1] 60

  # $ts.eps
  # [1] 1e-05

  # $ts.S.compat
  # [1] FALSE

  # $unzip
  # [1] "internal"

  # $useFancyQuotes
  # [1] TRUE

  # $verbose
  # [1] FALSE

  # $warn
  # [1] 0

  # $warning.length
  # [1] 1000

  # $width
  # [1] 130

  # $windowsTimeouts
  # [1] 100 500
Sowmya S. Manian
  • 3,723
  • 3
  • 18
  • 30
  • That answers how to find arguments, but why is `plot` function special in that it doesnt give list of default parameters when you use command `plot()` – emperorspride188 Aug 16 '16 at 07:00
  • 1
    @emperorspride: Some functions uses `UseMethod` inside it. Plot uses `plot` method. There the difference comes. WIll get back here soon. – Sowmya S. Manian Aug 16 '16 at 07:13
  • 1
    @emperorspride188 To understand please refer pdf called `R Language Definitions` stored as `R-lang.pdf` inside R Console. `Go to Help -> Manuals(in PDF) -> R Language Definitions and see Chapter 4 Functions of few pages which has all description.` – Sowmya S. Manian Aug 16 '16 at 08:23