#' 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))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.