test_that('dataSet transforms the data to SpatialPointsDataFrames, and produces the relevant metadata.', {
##Generate arbitrary data:
#Arbitrary projection
projection <- '+proj=tmerc'
#Make random shape to generate points on
x <- c(16.48438, 17.49512, 24.74609, 22.59277, 16.48438)
y <- c(59.736328125, 55.1220703125, 55.0341796875, 61.142578125, 59.736328125)
xy <- cbind(x, y)
SpatialPoly <- st_sfc(st_polygon(list(xy)), crs = projection)
##Old coordinate names
#Make random points
#Random presence only dataset
PO <- st_as_sf(st_sample(SpatialPoly, 100, crs = projection))
st_geometry(PO) <- 'geometry'
##Add random variable
PO$numvar <- runif(n = nrow(PO))
PO$factvar <- sample(x = c('a','b'), size = nrow(PO), replace = TRUE)
PO$species <- sample(x = c('fish1', 'fish2'), size = nrow(PO), replace = TRUE)
PO$temp <- rpois(n = nrow(PO), lambda = 5)
#Random presence absence dataset
PA <- st_as_sf(st_sample(SpatialPoly, 100, crs = projection))
st_geometry(PA) <- 'geometry'
PA$PAresp <- sample(x = c(0,1), size = nrow(PA), replace = TRUE)
#Add trial name
PA$trial <- sample(x = c(1,2,3), size = nrow(PA), replace = TRUE)
PA$pointcov <- runif(n = nrow(PA))
PA$binommark <- sample(x = 0:1, size = nrow(PA), replace = TRUE)
PA$marktrial <- sample(x = 2:5, size = nrow(PA), replace = TRUE)
PA$species <- sample(x = c('bird1', 'bird2'), nrow(PA), replace = TRUE)
PA$temp <- rpois(n = nrow(PA), lambda = 5)
spData <- list(PO, PA)
mod <- dataSet(datapoints = spData, datanames = c('PO', 'PA'),
coords = c('long', 'lat'), proj = projection,
pointcovnames = 'pointcov', paresp = 'PAresp', countsresp = 'counts', trialname = 'trial',
speciesname = 'species', marks = c('numvar', 'factvar', 'binommark'),
marktrialname = 'marktrial', markfamily = c('uniform', 'multinomial', 'binomial'),
temporalvar = 'temp', offsetname = NULL)
expect_setequal(names(mod), c("Data", "Family", "dataType", "varsIn", "Marks",
"marksType", "multinomVars", 'numObs'))
expect_setequal(names(mod$Data), c('PO','PA'))
expect_true(all(unlist(lapply(unlist(mod$Data, recursive = FALSE), function(x) inherits(x, 'sf')))))
##Should create a placeholder variable for the poresp +
#should keep marks +
#should create new variables for the multinomial marks.
expect_setequal(names(mod$Data$PO[[1]]), c("poresp", "numvar", "factvar", 'temp', 'geometry','._dataset_index_var_.',
"species", "factvar_phi", "factvar_response", 'speciesINDEX_VAR'))
expect_true((all(mod$Data$PO[[1]]$factvar_phi == 1)))
expect_true((all(mod$Data$PO[[1]]$factvar_response == 1)))
expect_true(class(mod$Data$PO[[1]]$factvar) == 'character')
expect_setequal(names(mod$Data$PA[[1]]), c("PAresp", "trial", "binommark", 'temp', 'geometry', '._dataset_index_var_.',
"marktrial", "species", "pointcov", 'speciesINDEX_VAR'))
#Family for PO should be:
# cp for the points;
# uniform for the mark;
# poisson for the multinomial mark.
expect_setequal(mod$Family$PO, c('cp', 'uniform', 'poisson'))
expect_setequal(mod$Family$PA, c('binomial', 'binomial'))
expect_named(mod$dataType, c('PO', 'PA'))
expect_setequal(mod$dataType, c('Present only', 'Present absence'))
##PO has no point covariates;
##PA has pointcov as a pointcovariate
expect_true(is.null(unlist(mod$varsIn$PO)))
expect_true(unlist(mod$varsIn$PA) == 'pointcov')
expect_setequal(mod$Marks$PO, c('numvar', 'factvar'))
expect_setequal(mod$Marks$PA, c('binommark'))
expect_named(mod$marksType$PO, c('numvar', 'factvar'))
expect_named(mod$marksType$PA, c('binommark'))
expect_setequal(mod$marksType$PO, c('Uniform mark', 'Multinomial mark'))
expect_setequal(mod$marksType$PA, c('Binomial mark'))
expect_true('factvar' %in% mod$multinomVars)
expect_true(mod$numObs[1] == nrow(PO))
expect_true(mod$numObs[2] == nrow(PA))
#Remove a dataset name
expect_error(dataSet(datapoints = spData, datanames = c('PO'),
coords = colnames(PO@coords), proj = projection, offsetname = NULL,
pointcovnames = 'pointcov', paresp = 'PAresp', countsresp = 'counts', trialname = 'trial',
speciesname = 'species', marks = c('numvar', 'factvar', 'binommark'),
marktrialname = 'marktrial', markfamily = c('uniform', 'multinomial', 'binomial')),
'Number of dataset names needs to equal length of datasets.')
#Remove a mark family
expect_error(dataSet(datapoints = spData, datanames = c('PO','PA'),
coords = colnames(PO@coords), proj = projection, offsetname = NULL,
pointcovnames = 'pointcov', paresp = 'PAresp', countsresp = 'counts', trialname = 'trial',
speciesname = 'species', marks = c('numvar', 'factvar', 'binommark'),
marktrialname = 'marktrial', markfamily = c('uniform', 'multinomial')),
"Number of marks needs to equal the number of mark families.")
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.