How to load various types of files in R.
This function has two roles:
to proceed with the loading of files that are in a simList
; or
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()
data.frame
of file extension, package, and function mappings
the modified sim
, invisibly.
data.frame
Generally not intended to be used by users.
# \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/Rtmp45trFG/reproducible/cache'
#> spades.inputPath = '/tmp/Rtmp45trFG/SpaDES/inputs'
#> spades.outputPath = '/tmp/Rtmp45trFG/SpaDES/outputs'
#> spades.modulePath = '/tmp/Rtmp45trFG/SpaDES/modules'
#> spades.scratchPath = '/tmp/Rtmp45trFG/SpaDES/scratch'
#> )
#> Nov21 04:22:34 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Nov21 04:22:34 simInit DEM read from /tmp/Rtmp45trFG/maps/DEM.tif using rasterToMemory
#> Nov21 04:22:34 simInit forestAge read from /tmp/Rtmp45trFG/maps/forestAge.tif using rasterToMemory
#> Nov21 04:22:34 simInit forestCover read from /tmp/Rtmp45trFG/maps/forestCover.tif using rasterToMemory
#> Nov21 04:22:34 simInit habitatQuality read from /tmp/Rtmp45trFG/maps/habitatQuality.tif using rasterToMemory
#> Nov21 04:22:34 simInit percentPine read from /tmp/Rtmp45trFG/maps/percentPine.tif using rasterToMemory
#> Elpsed time for simInit: 0.144654 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/Rtmp45trFG/reproducible/cache'
#> spades.inputPath = '/tmp/Rtmp45trFG/SpaDES/inputs'
#> spades.outputPath = '/tmp/Rtmp45trFG/SpaDES/outputs'
#> spades.modulePath = '/tmp/Rtmp45trFG/SpaDES/modules'
#> spades.scratchPath = '/tmp/Rtmp45trFG/SpaDES/scratch'
#> )
#> Nov21 04:22:34 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Nov21 04:22:34 simInit DEM read from /tmp/Rtmp45trFG/maps/DEM.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 simInit forestAge read from /tmp/Rtmp45trFG/maps/forestAge.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 simInit forestCover read from /tmp/Rtmp45trFG/maps/forestCover.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 simInit habitatQuality read from /tmp/Rtmp45trFG/maps/habitatQuality.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 simInit percentPine read from /tmp/Rtmp45trFG/maps/percentPine.tif using rast(inMemory=FALSE)
#> Elpsed time for simInit: 0.06026769 secs
end(sim2) <- 10
sim2 <- spades(sim2) # loads the object at time 10
#> Nov21 04:22:34 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Nov21 04:22:34 chckpn:init total elpsd: 0.061 secs | 0 checkpoint init 0
#> Nov21 04:22:34 save :init total elpsd: 0.063 secs | 0 save init 0
#> Nov21 04:22:34 prgrss:init total elpsd: 0.065 secs | 0 progress init 0
#> Nov21 04:22:34 load :init total elpsd: 0.067 secs | 0 load init 0
#> Nov21 04:22:34 load :inputs total elpsd: 0.068 secs | 10 load inputs 0
#> Nov21 04:22:34 load :inputs percentPine read from /tmp/Rtmp45trFG/maps/percentPine.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 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
#> Nov21 04:22:34 simInit Using setDTthreads(1). To change: 'options(spades.DTthreads = X)'.
#> Nov21 04:22:34 load :inputs total elpsd: 0.085 secs | 20 load inputs 0
#> Nov21 04:22:34 load :inputs percentPine read from /tmp/Rtmp45trFG/maps/percentPine.tif using rast(inMemory=FALSE)
#> Nov21 04:22:34 load :inputs at time 20
#> simList saved in
#> SpaDES.core:::savedSimEnv()$.sim
#> It will be deleted at next spades() call.
# }