Nothing
#' Spread the information in dose_finding_paths object to a wide data.frame format.
#'
#' @param df Optional \code{data.frame} like that returned by
#' as_tibble(dose_finding_paths). Columns .depth, .node, .parent are required.
#' All other columns are spread with a suffix reflecting depth.
#' @param dose_finding_paths Optional instance of dose_finding_paths. Required
#' if `df` is null.
#' @param max_depth integer, maximum depth of paths to traverse.
#'
#' @return A data.frame
#'
#' @importFrom tibble as_tibble
#' @importFrom magrittr "%>%"
#' @importFrom dplyr filter select rename full_join rename_at vars starts_with
#'
#' @export
#'
#' @examples
#' \dontrun{
#' # Calculate paths for the first two cohorts of three patients a CRM trial
#' skeleton <- c(0.05, 0.1, 0.25, 0.4, 0.6)
#' target <- 0.25
#' cohort_sizes <- c(3, 3)
#' paths <- get_dfcrm(skeleton = skeleton, target = target) %>%
#' get_dose_paths(cohort_sizes = cohort_sizes)
#' }
spread_paths <- function(df = NULL,
dose_finding_paths = NULL,
max_depth = NULL) {
# Is spread a generic? I.e. could this just become spread(paths, ...)
if(is.null(df) & is.null(dose_finding_paths))
stop('Specify either df or dose_finding_paths.')
if(is.null(df) & !is.null(dose_finding_paths))
df <- as_tibble(dose_finding_paths)
if(is.null(max_depth)) max_depth <- max(df$.depth)
if(!all(c('.depth', '.node', '.parent') %in% colnames(df)))
stop("Columns '.depth', '.node' and '.parent' are required.")
.depth <- .parent <- .node <- Node <- NULL
depth = 0
wide_df <- df %>%
filter(.depth == depth) %>%
select(-.parent, -.depth) %>%
rename_at(vars(-starts_with(".")), function(x) paste0(x, depth)) %>%
rename(Node = .node)
for(depth in 1:max_depth) {
sub_df <- df %>%
filter(.depth == depth) %>%
rename_at(vars(-starts_with(".")), function(x) paste0(x, depth)) %>%
select(-.depth)
wide_df <- wide_df %>%
full_join(sub_df,
by = c('Node' = '.parent'),
suffix = paste0(".", c(depth - 1, depth))) %>%
select(-Node) %>%
rename(Node = .node)
}
wide_df %>% select(-Node)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.