injectData: Inject pre-existing data into a 'defData' from 'simstudy'

Description Usage Arguments Details Value Examples

View source: R/utils_simstudy.R

Description

Inject pre-existing data into a defData from simstudy.

Usage

1
injectData(dtDefs, dtData)

Arguments

dtDefs

defData table from simstudy.

dtData

data.frame or data.table to inject.

Details

Sometimes we need to inject data into a defData from simstudy. This is particularly true when using correlated data which cannot be manipulated with defData unless the double notation .. in formula. This function is particularly useful when using correlated data and avoid the tricks required when working with such data.

Value

data with a defData together.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# create data definition with ..x notation
defs <- simstudy::defData(varname = "x0", dist = "normal",
  formula = 0, variance = 1)
defs <- simstudy::defData(defs, varname = "x1", dist = "nonrandom",
  formula = "..x1")
defs <- simstudy::defData(defs, varname = "x2", dist = "nonrandom",
  formula = "..x2")
defs <- simstudy::defData(defs, varname = "x3", dist = "nonrandom",
  formula = "..x3")
defs <- simstudy::defData(defs, varname = "mu", dist = "nonrandom",
  formula = "x0 + x1 + x2 + x3")
defs <- simstudy::defData(defs, varname = "sigma", dist = "exponential",
  formula = 1)
defs <- simstudy::defData(defs, varname = "y", dist = "normal",
  formula = "mu", variance = "sigma^2")
# correlation matrix used to generate correlated data fro x1, x2 and x3
Rho <- simstudy::genCorMat(nvars = 3, cors = 1:3 * 0.25)
# generate correlated data for x1, x2 and x3
dtCor <- simstudy::genCorData(n = 100L, mu = 0:2, sigma = 1:3 * 0.5,
  corMatrix = Rho, cnames = c("x1", "x2", "x3"))
# inject data into the definitions
out <- injectData(dtDefs = defs, dtData = dtCor)
stopifnot(identical(names(out), c("id", defs$varname)))

FrankLef/eflStats documentation built on Dec. 17, 2021, 8:30 p.m.