How to load various types of files in R.

This function has two roles:

  1. to proceed with the loading of files that are in a simList; or

  2. as a shortcut to simInit(inputs = filelist).

A data.frame with information on how to load various types of files in R, containing the columns:

  • exts: the file extension;

  • fun: the function to use for files with this file extension;

  • package: the package from which to load fun.

.fileExtensions()

loadFiles(sim, filelist, ...)

# S4 method for class 'simList,missing'
loadFiles(sim, filelist, ...)

# S4 method for class 'missing,ANY'
loadFiles(sim, filelist, ...)

# S4 method for class 'missing,missing'
loadFiles(sim, filelist, ...)

.saveFileExtensions()

Arguments

sim

simList object.

filelist

list or data.frame to call loadFiles directly from the filelist as described in Details

...

Additional arguments.

Value

data.frame of file extension, package, and function mappings

the modified sim, invisibly.

data.frame

Note

Generally not intended to be used by users.

See also

Author

Eliot McIntire and Alex Chubaty

Examples

# \donttest{
library(SpaDES.core)

# Load random maps included with package
filelist <- data.frame(
  files = dir(getMapPath(tempdir()), full.names = TRUE),
  functions = "rasterToMemory",
  package = "SpaDES.core"
)
sim1 <- loadFiles(filelist = filelist) # loads all the maps to sim1 simList
#> Setting:
#>   options(
#>     reproducible.cachePath = '/tmp/RtmpIQ0Aky/reproducible/cache'
#>     spades.inputPath = '/tmp/RtmpIQ0Aky/SpaDES/inputs'
#>     spades.outputPath = '/tmp/RtmpIQ0Aky/SpaDES/outputs'
#>     spades.modulePath = '/tmp/RtmpIQ0Aky/SpaDES/modules'
#>     spades.scratchPath = '/tmp/RtmpIQ0Aky/SpaDES/scratch'
#>   )
#> Jan27 19:03:54 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Jan27 19:03:54 simInit DEM read from /tmp/RtmpIQ0Aky/maps/DEM.tif using rasterToMemory
#> Jan27 19:03:54 simInit forestAge read from /tmp/RtmpIQ0Aky/maps/forestAge.tif using rasterToMemory
#> Jan27 19:03:54 simInit forestCover read from /tmp/RtmpIQ0Aky/maps/forestCover.tif using rasterToMemory
#> Jan27 19:03:54 simInit habitatQuality read from /tmp/RtmpIQ0Aky/maps/habitatQuality.tif using rasterToMemory
#> Jan27 19:03:54 simInit percentPine read from /tmp/RtmpIQ0Aky/maps/percentPine.tif using rasterToMemory
#> Elpsed time for simInit: 0.1702602 secs

# Second, more sophisticated. All maps loaded at time = 0, and the last one is reloaded
#  at time = 10 and 20 (via "intervals").
# Also, pass the single argument as a list to all functions...
#  specifically, when add "native = TRUE" as an argument to the raster function
files <- dir(getMapPath(tempdir()), full.names = TRUE)
arguments <- I(rep(list(lyrs = 1), length(files)))
filelist <- data.frame(
   files = files,
   functions = "terra::rast",
   objectName = NA,
   arguments = arguments,
   loadTime = 0,
   intervals = c(rep(NA, length(files)-1), 10)
)

sim2 <- loadFiles(filelist = filelist) # only does the time = 0 loading; see next
#> Setting:
#>   options(
#>     reproducible.cachePath = '/tmp/RtmpIQ0Aky/reproducible/cache'
#>     spades.inputPath = '/tmp/RtmpIQ0Aky/SpaDES/inputs'
#>     spades.outputPath = '/tmp/RtmpIQ0Aky/SpaDES/outputs'
#>     spades.modulePath = '/tmp/RtmpIQ0Aky/SpaDES/modules'
#>     spades.scratchPath = '/tmp/RtmpIQ0Aky/SpaDES/scratch'
#>   )
#> Jan27 19:03:54 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Jan27 19:03:54 simInit DEM read from /tmp/RtmpIQ0Aky/maps/DEM.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 simInit forestAge read from /tmp/RtmpIQ0Aky/maps/forestAge.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 simInit forestCover read from /tmp/RtmpIQ0Aky/maps/forestCover.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 simInit habitatQuality read from /tmp/RtmpIQ0Aky/maps/habitatQuality.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 simInit percentPine read from /tmp/RtmpIQ0Aky/maps/percentPine.tif using rast(inMemory=FALSE)
#> Elpsed time for simInit: 0.06216216 secs
end(sim2) <- 10
sim2 <- spades(sim2) # loads the object at time 10
#> Jan27 19:03:54 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Jan27 19:03:54 chckpn:init total elpsd: 0.063 secs | 0 checkpoint init 0
#> Jan27 19:03:54 save  :init total elpsd: 0.065 secs | 0 save init 0
#> Jan27 19:03:54 prgrss:init total elpsd: 0.067 secs | 0 progress init 0
#> Jan27 19:03:54 load  :init total elpsd: 0.069 secs | 0 load init 0
#> Jan27 19:03:54 load  :inputs total elpsd: 0.07 secs | 10 load inputs 0
#> Jan27 19:03:54 load  :inputs percentPine read from /tmp/RtmpIQ0Aky/maps/percentPine.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 load  :inputs    at time 10
#> simList saved in
#> SpaDES.core:::savedSimEnv()$.sim
#> It will be deleted at next spades() call.

# if we extend the end time and continue running, it will load an object scheduled
#  at time = 10, and it will also schedule a new object loading at 20 because
#  interval = 10
end(sim2) <- 20
sim2 <- spades(sim2) # loads the percentPine map 2 more times, once at 10, once at 20
#> Jan27 19:03:54 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Jan27 19:03:54 load  :inputs total elpsd: 0.088 secs | 20 load inputs 0
#> Jan27 19:03:54 load  :inputs percentPine read from /tmp/RtmpIQ0Aky/maps/percentPine.tif using rast(inMemory=FALSE)
#> Jan27 19:03:54 load  :inputs    at time 20
#> simList saved in
#> SpaDES.core:::savedSimEnv()$.sim
#> It will be deleted at next spades() call.
# }