R/create_nodeEdges.R

Defines functions create_nodeEdges

Documented in create_nodeEdges

#' function: Create nodes and edges for path analysis
#' first version
#'
#' @param paths lavaan.data.frame
#' @return Node set and Edge set to draw graph
#' @examples TBA
#' @author Jongwoo Choi, \email{jc4816@columbia.edu}
#' @references TBA
#' @keywords path analysis
#' @import dplyr
#' @import DiagrammeR
#' @export

create_nodeEdges <- function(paths){
  # Regressions are the paths in the "~" lines
  regressions <- paths %>%
    filter(op == "~" | op == "~~") %>%  # Include Covariance/variance (~~)
    rename(edge_to = lhs, edge_from = rhs) %>%
    mutate(label = round(est, 2)) %>% select(-est) %>%
    select(edge_from, edge_to, label, pvalue)

  regressions$edge_from <- as.character(regressions$edge_from)
  regressions$edge_to <- as.character(regressions$edge_to)
  nodesd = unique(c(regressions$edge_from, regressions$edge_to))

  node_set <- create_node_df(n=length(nodesd),
                             type=nodesd,
                             shape = 'circle',
                             style = "filled")

  edge_set <- create_edge_df(factor(regressions$edge_from, levels=nodesd),
                             factor(regressions$edge_to, levels=nodesd),
                             label = ifelse(regressions$pvalue < 0.05, regressions$label, ""),
                             color = ifelse(regressions$pvalue < 0.01, 'red', ifelse(regressions$pvalue >=0.01 & regressions$pvalue < 0.05, 'gray', 'white')))

  return(list(node_set, edge_set))
}
seonjoo/slmisc documentation built on Dec. 9, 2019, 7:47 p.m.