Auxiliary script startup
The auxiliary script startup.R
below is loaded in the R code for all chapters.
The chapter R code assumes that the script is placed in a subdirectory ‘R’ of the current working directory.
You can download the script here .
## startup.R
## Standard incantations for the start of every .Rnw file
##
## Copyright (C) 2015 Adrian Baddeley, Ege Rubak and Rolf Turner
require ( spatstat )
require ( spatstat.utils )
require ( english )
## Adding all 'require' commands here
## so that it is immediately clear if any packages need to be installed.
require ( maptools )
require ( tiff )
require ( jpeg )
require ( dixon )
## Specify draft version (fast computations, low resolution) or final version
draftversion <- FALSE
## Specify printed book or e-book
ebook <- FALSE
## This flag can be used in the Rnw source to execute
## different commands for ebook and printed book.
## You can even change the text, using \Sexpr{if(ebook) ...}
## Grey scale flag
## Set monochrome=TRUE for the printed book, FALSE for e-book
monochrome <- ! ebook
monowarning <- if ( ! monochrome ) "" else
"Colours are rendered as greyscales in this book."
## The main effect of 'monochrome=TRUE' is to force graphics to be greyscale.
## Additionally this flag can be used in the Rnw source to execute
## different commands depending on whether colour or monochrome is required.
## You can even change the text, using \Sexpr{if(monochrome) ...}
if ( monochrome ) {
## Set the graphics colours to greyscale
## Standard pen colours
palette ( to.grey ( palette ()))
## standard image colour map
spatstat.options ( image.colfun = function ( n ) grey ( seq ( 0 , 1 , length = n )))
## spatstat internal code
spatstat.options ( monochrome = TRUE )
spatstat.options ( par.pp3 = list ( box.front = list ( col = 1 , lwd = 2 ),
box.back = list ( col = "grey" )))
## The following 'sledgehammer' commands will force all graphics
## to be greyscale, but they should not be required..
## ps.options does not recognise the English spelling of 'grey'
# ps.options(colormodel="gray")
## pdf.options DOES recognise the English spelling of 'grey'
# pdf.options(colormodel="grey")
} ## otherwise leave at default which is sRGB
## Suppress new 'semi-transparent' colours in plot.ppp
spatstat.options ( transparent = FALSE )
## Simulation algorithms
## The following options ensure that simulations are reproducible
## using the chosen random seed values. They select the older, slower
## simulation algorithms that were in force when the book was written.
spatstat.options ( fastthin = FALSE )
spatstat.options ( fastpois = FALSE )
## default parameters for plot.fv
parfv <- list ()
parfv $ legendargs <- list ( bty = "n" ) # no box around legend
if ( monochrome ) parfv $ col <- 1 # black lines
spatstat.options ( par.fv = parfv )
## define commonly-used greyscale maps
blacktowhite <- function ( n ) { grey ( seq ( 0 , 1 , length = n )) }
whitetoblack <- function ( n ) { grey ( seq ( 1 , 0 , length = n )) }
greytoblack <- function ( n ) { grey ( seq ( 0.9 , 0 , length = n )) }
blacktogrey <- function ( n ) { grey ( seq ( 0.0 , 9 , length = n )) }
lighttodark <- function ( n ) { grey ( seq ( 0.9 , 0.2 , length = n )) }
darktolight <- function ( n ) { grey ( seq ( 0.2 , 0.9 , length = n )) }
## Set width of R output
## (this limit is often but not always respected)
## If using krantz1 (text width 6+1/8 inch), set width to 60 characters
## If using krantz2 (text width 7 inch), set width to 72 characters
## We're using krantz2, with R output in 'small' font, allowing 88 characters
options ( width = 82 )
## Set continuation character to blank
options ( continue = " " )
## Suppress weird characters
options ( useFancyQuotes = FALSE )
## Figure layout functions and parameters
source ( "R/figurelayout.R" )
## set default graphics parameters in Sweave plots
resetpar ()
## use Times font family in all graphics text
ps.options ( family = "Times" )
pdf.options ( family = "Times" )
## Ensure the directory exists for saving automatically-generated graphics
if ( ! file.exists ( "pix-auto" )) dir.create ( "pix-auto" )
## Ditto for saved data
if ( ! file.exists ( "data-auto" )) dir.create ( "data-auto" )
datafilepath <- function ( fname ) { paste0 ( "data-auto/" , fname ) }
## .................. Code for generating text ......................
## enforce American convention for lists: "A, B, and C"
UScommasep <- function ( x , join = ", and " , flatten = TRUE ) {
commasep ( x , join = join , flatten = flatten )
}
## Use inside \Sexpr to enclose a string in \texttt{ }
inFont <- function ( f = "texttt" , x ) {
if ( is.null ( x )) return ( "" )
paste0 ( "\\\\" , f , paren ( x , "{" ))
}
## convert e.g. 'SpatialLinesDataFrame' into Spatial\-Lines\-Data\-Frame
## to avoid overrunning margins.
HyphenateMouthful <- function ( x ) {
## split into characters
y <- strsplit ( x , NULL )[[ 1 ]]
## identify l.c. followed by u.c.
ends <- which ( y [ - length ( y )] %in% letters & y [ -1 ] %in% LETTERS )
ends <- c ( ends , nchar ( x ))
nbits <- length ( ends )
starts <- c ( 0 , ends [ - nbits ]) + 1
##
z <- substr ( x , starts [ 1 ], ends [ 1 ])
if ( nbits > 1 ) {
for ( i in 2 : nbits )
z <- paste0 ( z , "\\\\-" , substr ( x , starts [ i ], ends [ i ]))
}
return ( z )
}
requireversion <- function ( pkg , ver ) {
eval ( substitute ( require ( p ), list ( p = substitute ( pkg ))))
pkgname <- deparse ( substitute ( pkg ))
v <- read.dcf ( file = system.file ( "DESCRIPTION" , package = pkgname ),
fields = "Version" )
if ( package_version ( v ) < ver )
stop ( paste ( "Package" ,
sQuote ( pkgname ),
"is out of date: version >=" ,
ver ,
"is needed" ))
invisible ( NULL )
}
requireversion ( spatstat , "1.42-2.027" )