RxODE (version 0.8.0-9)

eventTable: Create an event table object

Description

Initializes an object of class ‘EventTable’ with methods for adding and querying dosing and observation records

Usage

eventTable(amount.units = NA, time.units = "hours")

Arguments

amount.units

string denoting the amount dosing units, e.g., “mg”, “ug”. Default to NA to denote unspecified units. It could also be a solved RxODE object. In that case, eventTable(obj) returns the eventTable that was used to solve the RxODE object.

time.units

string denoting the time units, e.g., “hours”, “days”. Default to "hours".

An eventTable is an object that consists of a data.frame storing ordered time-stamped events of an (unspecified) PK/PD dynamic system, units (strings) for dosing and time records, plus a list of functions to add and extract event records.

Currently, events can be of two types: dosing events that represent inputs to the system and sampling time events that represent observations of the system with ‘amount.units’ and ‘time.units’, respectively. In the future, additional events may include resetting of state variables (compartments), for instance, to indicate time after “wash-out”, etc.

Value

A closure with the following list of functions:

get.EventTable

returns the current event table.

add.dosing

adds dosing records to the event table.

Its arguments are

dose: numeric scalar, dose amount in amount.units;

nbr.doses: integer, number of doses;

dosing.interval: required numeric scalar, time between doses in time.units, defaults to 24 of time.units="hours";

dosing.to: integer, compartment the dose goes into (first compartment by default);

rate: for infusions, the rate of infusion (default is NULL, for bolus dosing;

start.time: required dosing start time;

do.sampling: logical, should observation sampling records be added at the dosing times? Defaults to FALSE.

amount.units: optional string indicating the dosing units. Defaults to NA to indicate as per the original EventTable definition.

time.units: optional string indicating the time units. Defaults to "hours" to indicate as per the original EventTable definition.

get.dosing

returns a data.frame of dosing records.

clear.dosing

clears or deletes all dosing from event table

add.sampling

adds sampling time observation records to the event table. Its arguments are

time a vector of time values (in time.units).

time.units an optional string specifying the time units. Defaults to the units specified when the EventTable was initialized.

get.sampling

returns a data.frame of sampled observation records.

clear.sampling

removes all sampling from event table.

get.obs.rec

returns a logical vector indicating whether each event record represents an observation or not.

get.nobs

returns the number of observation (not dosing) records.

get.units

returns a two-element character vector with the dosing and time units, respectively.

copy

makes a copy of the current event table. To create a copy of an event table object use qd2 <- qd$copy().

expand

Expands the event table for multi-subject solving. This is done by qd$expand(400) for a 400 subject data expansion

See Also

RxODE

Examples

Run this code
# NOT RUN {
# create dosing and observation (sampling) events
# QD 50mg dosing, 5 days followed by 25mg 5 days
#
qd <- eventTable(amount.units = "mg", time.units = "days")
#
qd$add.dosing(dose=50, nbr.doses=5, dosing.interval = 1, do.sampling=FALSE)
#
# sample the system's drug amounts hourly the first day, then every 12 hours
# for the next 4 days
qd$add.sampling(seq(from = 0, to = 1, by = 1/24))
qd$add.sampling(seq(from = 1, to = 5, by = 12/24))
#
#print(qd$get.dosing())     # table of dosing records
print(qd$get.nobs())   # number of observation (not dosing) records
#
# BID dosing, 5 days
bid <- eventTable("mg", "days")  # only dosing
bid$add.dosing(dose=10000, nbr.doses=2*5,
               dosing.interval = 12, do.sampling=FALSE)
#
# Use the copy() method to create a copy (clone) of an existing
# event table (simple assignments just create a new reference to
# the same event table object (closure)).
#
bid.ext <- bid$copy()      # three-day extension for a 2nd cohort
bid.ext$add.dosing(dose = 5000, nbr.doses = 2*3,
                   start.time = 120, dosing.interval = 12, do.sampling = FALSE)

# You can also use the Piping operator to create a table

qd2 <- eventTable(amount.units="mg", time.units="days") %>%
    add.dosing(dose=50, nbr.doses=5, dosing.interval=1, do.sampling=FALSE) %>%
    add.sampling(seq(from=0, to=1, by=1 / 24)) %>%
    add.sampling(seq(from=1, to=5, by=12 / 24))
#print(qd2$get.dosing())     # table of dosing records
print(qd2$get.nobs())   # number of observation (not dosing) records

# Note that piping with %>% will update the original table.

qd3 <- qd2 %>% add.sampling(seq(from=5, to=10, by=6 / 24))
print(qd2$get.nobs())
print(qd3$get.nobs())
# }

Run the code above in your browser using DataCamp Workspace