R/CreateTableDesign.R

############################################################################################################################

# Function: CreateTableDesign.
# Argument: data.strucure and label (optional).
# Description: Generate a summary table of design parameters for the report.

CreateTableDesign = function(data.structure, label = NULL) {

  # Number of design
  n.design = length(data.structure$design.parameter.set)

  # Label
  if (is.null(label)) label = paste0("Design ", 1:n.design)
  else label = unlist(label)
  if (length(label) != n.design)
    stop("Summary: Number of the design parameters labels must be equal to the number of design parameters sets.")

  # Summary table
  design.table <- matrix(nrow = n.design, ncol = 9)

  design.parameter.set = data.structure$design.parameter.set

  for (i in 1:n.design) {
    design.table[i, 1] = i
    design.table[i, 2] = label[i]
    design.table[i, 3] = design.parameter.set[[i]]$enroll.period
    if (!is.na(design.parameter.set[[i]]$enroll.dist)){
      if (design.parameter.set[[i]]$enroll.dist=="UniformDist") enroll.dist.par.dummy = list(max = design.parameter.set[[i]]$enroll.period)
      else enroll.dist.par.dummy = design.parameter.set[[i]]$enroll.dist.par
      enroll.dist.desc = do.call(design.parameter.set[[i]]$enroll.dist,list(list("description",enroll.dist.par.dummy)))
      design.table[i, 4] = unlist(enroll.dist.desc[[2]])
      if (!any(is.na(design.parameter.set[[i]]$enroll.dist.par))){
        enroll.dist.par = paste0(paste0(enroll.dist.desc[[1]]," = "), round(unlist(design.parameter.set[[i]]$enroll.dist.par),4), collapse = "\n")
        design.table[i, 5] = enroll.dist.par
      }
      else design.table[i, 5] = design.parameter.set[[i]]$enroll.dist.par
    }
    else {
      design.table[i, 4] = design.parameter.set[[i]]$enroll.dist
      design.table[i, 5] = design.parameter.set[[i]]$enroll.dist.par
    }
    design.table[i, 6] = design.parameter.set[[i]]$followup.period
    design.table[i, 7] = design.parameter.set[[i]]$study.duration
    if (!is.na(design.parameter.set[[i]]$dropout.dist)){
      if (design.parameter.set[[i]]$dropout.dist != "UniformDist"){
        dropout.dist.desc = do.call(design.parameter.set[[i]]$dropout.dist,list(list("description",design.parameter.set[[i]]$dropout.dist.par)))
      } else {
        dropout.dist.desc = do.call(design.parameter.set[[i]]$dropout.dist,list(list("description",list(max = 1/design.parameter.set[[i]]$dropout.dist.par$prop))))
        dropout.dist.desc[[1]][[1]] = "prop"
      }
      design.table[i, 8] = unlist(dropout.dist.desc[[2]])
      if (!any(is.na(design.parameter.set[[i]]$dropout.dist.par))){
        dropout.dist.par = paste0(paste0(dropout.dist.desc[[1]]," = "), round(unlist(design.parameter.set[[i]]$dropout.dist.par),4), collapse = "\n")
        design.table[i, 9] = dropout.dist.par
      }
      else design.table[i, 9] = design.parameter.set[[i]]$enroll.dist.par
    }
    else {
      design.table[i, 8] = design.parameter.set[[i]]$dropout.dist
      design.table[i, 9] = design.parameter.set[[i]]$dropout.dist.par
    }
  }
  design.table = as.data.frame(design.table)
  colnames(design.table) = c("design.parameter", "Design parameter set", "Enrollment period", "Enrollment distribution", "Enrollment distribution parameter", "Follow-up period", "Study duration", "Dropout distribution", "Dropout distribution parameter")
  return(design.table)
}
# End of CreateTableDesign

Try the Mediana package in your browser

Any scripts or data that you put into this service are public.

Mediana documentation built on May 8, 2019, 5:04 p.m.