Learn R Programming

AMModels (version 0.1.4)

AMModels: Search for a model in a model list using grep

Description

Enables adaptive management by codifying knowledge in the form of models generated from numerous analyses and datasets. AMModels facilitates this process by storing all models and datasets in a single object that can be seemlessly updated, tracking changes in knowledge through time. A shiny application called AM Model Manager enables the use of these functions via a GUI. To launch the Model Manager, use modelMgr().

Arguments

Copyright

This software is in the public domain because it contains materials that originally came from the United States Geological Survey, an agency of the United States Department of Interior. For more information, see the official USGS copyright policy at http://www.usgs.gov/visual-id/credit_usgs.html#copyright

Disclaimer

This software is in the public domain because it contains materials that originally came from the U.S. Geological Survey, an agency of the United States Department of Interior. For more information, see the official USGS copyright policy at http://www.usgs.gov/visual-id/credit_usgs.html#copyright. Although this software program has been used by the U.S. Geological Survey (USGS), no warranty, expressed or implied, is made by the USGS or the U.S. Government as to the accuracy and functioning of the program and related program material nor shall the fact of distribution constitute any such warranty, and no responsibility is assumed by the USGS in connection therewith. This software is provided "AS IS."

See Also

Other amModelLib: amData, amModelLib, amModel, getters, grepAMModelLib, insertAMModelLib, lsModels, rmModel

Examples

Run this code
# NOT RUN {
# create data and linear models from from lm helpfile
## Annette Dobson (1990) "An Introduction to Generalized Linear Models".
## Page 9: Plant Weight Data.
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
lm.D90 <- lm(weight ~ group - 1) # omitting intercept

# create an amData object that includes metadata
plant.data <- data.frame(group = group, weight = weight)
plant.data <- amData(
    data = plant.data, 
    comment = 'Dataset from lm helpfile.'
)

# create a second amData object that includes metadata
log.plant.data <- data.frame(group, log.weight = log(weight))
log.plant.data <- amData(
    data = log.plant.data, 
    comment = 'data with log weight', 
    source = 'lm helpfile (R).'
)

# create two amModel objects with metadata and the metadata keyword 'data' to soft 
# link the data used to fit the models
full.model <- amModel(
    model = lm.D9, 
    comment = 'full model', 
    source = 'lm helpfile (R).', 
    taxa = 'plants', 
    data = 'plant.data'
)

no.int.model <- amModel(
    model = lm.D90, 
    comment = 'model without intercept', 
    source = 'lm helpfile (R).', 
    taxa = 'plants', 
    data = 'plant.data'
)

# create an amModelLib that contains the two amModel objects and two amData objects
# the models and data must be supplied as named lists
mymodels <- amModelLib(
    models = list(
        full.model = full.model, 
        no.int.model = no.int.model
    ), 
    data = list(
        plant.data = plant.data, 
        log.plant.data = log.plant.data
    )
)

# show the amModelLib
mymodels

# search the entire amModelLib for the word 'intercept'
# the dataset associated with the model will be returned
grepAMModelLib(pattern = "intercept", amml = mymodels)   
 
# search for data containing the word 'log'
grepAMModelLib(pattern = "log", amml = mymodels, search = "data") 

# search for models containing the word 'full';
# because 'full.model' is soft-linked to a dataset, 
# the dataset information will be returned.
grepAMModelLib(pattern = "full", amml = mymodels, search = "model") 


# list names of models in an amModelLib
lsModels(mymodels)

# list names of data in an amModelLib
lsData(mymodels)
 
# extract the dataset by name
getAMData(amml = mymodels, 'plant.data', as.list = FALSE)

# notice the data are returned in their original class
class(getAMData(amml = mymodels, 'plant.data', as.list = FALSE))

# you can also extract by index
getAMData(amml = mymodels, 1, as.list = FALSE)

# extract the model by name
getAMModel(amml = mymodels, 'full.model', as.list = FALSE)

# notice the models are returned in their original class
class(getAMModel(amml = mymodels, 'full.model', as.list = FALSE))
  
# you can also extract by index
getAMModel(amml = mymodels, 1, as.list = FALSE)

# remove just the second model
rmModel(mymodels, 'no.int.model')

# remove the first plant data
# notice a warning is produced because some amModels are softly linked
# to the dataset via the metadata keyword, 'data'
rmData(mymodels, 'plant.data')

# }
# NOT RUN {
# The shiny app
modelMgr()
# }

Run the code above in your browser using DataLab