Nothing
#'Mounts a white or black list
#'
#'This function receives a simple list with one or more couple of variables and mount a new data frame in "bnlearn" syntax.
#'The final result must return an object similar to the result of bnlearn command "data.frame(from = c('B', 'F'), to = c('F', 'B'))" that is more complex syntax.
#'@return A new data frame with the 'from' and 'to' variables
#'@param black_or_white_list is a list of couple of variables.
#'@author Elias Carvalho
#'@references Scutari M (2017). Bayesian Network Constraint-Based Structure Learning Algorithms: Parallel and Optimized Implementations in the bnlearn R Package. Journal of Statistical Software, 77(2), 1-20.
#'@examples
#'# Clean environment
#'closeAllConnections()
#'rm(list=ls())
#'# Set enviroment
#'# setwd("To your working directory")
#'# Load packages
#'library(bnpa)
#'library(bnlearn)
#'# Load data sets from package
#'data(dataQuantC)
#'# Show the first lines of data
#'head(dataQuantC)
#'# Learn the BN structure without black and white list
#'bn.structure <- hc(dataQuantC)
#'# Split graph panel in 2 columns
#'par(mfrow=c(1,2))
#'# Show the BN structure
#'bnlearn::graphviz.plot(bn.structure)
#'# Mounting the black list
#'black.list <- ("A-C,D-F")
#'black.list <- mount.wl.bl.list(black.list)
#'black.list
#'white.list <- ("A-B,D-G")
#'white.list <- mount.wl.bl.list(white.list)
#'white.list
#'# Learn the BN structure with black and white list
#'bn.structure <- hc(dataQuantC, whitelist = white.list, blacklist = black.list)
#'# Show the BN structure
#'bnlearn::graphviz.plot(bn.structure)
#'@export
mount.wl.bl.list <-function(black_or_white_list)
{
# Prepare variables 'from' and 'to'
# black_or_white_list <-"v1-v2,v3-v4,v5-v6"
black_or_white_list1 <- "data.frame(from = c("
black_or_white_list2 <- ", to = c("
# Create a variable to control the start of each string to e mounted
nstart <- 1
# scan all content of variable
for (x in 1 : nchar(black_or_white_list))
{
# if '-' is found start mount 'from'
if (substr(black_or_white_list,x,x)=="-")
{
black_or_white_list1 <- paste(black_or_white_list1, "'", substr(black_or_white_list,nstart,x-1),"'", sep="")
# prepare to start scanning 'to' part of variable
nstart <- x+1
# start scaning
for (y in nstart:nchar(black_or_white_list))
{
# if ',' is found means 'to' part finished
if (substr(black_or_white_list,y,y) == "," || y == nchar(black_or_white_list))
{
# check if is the end of black_or_white_list and choose the right positon of 'y'
if (y == nchar(black_or_white_list))
black_or_white_list2 <- paste(black_or_white_list2,"'", substr(black_or_white_list,nstart,y),"'", sep="")
else {
# in this case found a ",' then 'to' part end with 'y-1' position
black_or_white_list2 <- paste(black_or_white_list2,"'", substr(black_or_white_list,nstart,y-1),"'", sep="")
x <- nstart <- y+1
} # else
# leave 'y' loop and restart 'x' loop in position 'y'+1
break
} # if (substr(black_or_white_list,y,y)...
} # for (y in nstart:nchar(black_or_white_list))
} # if (substr(black_or_white_list,x,x)=="-"
} # for (x in 1 : nchar(black_or_white_list))
# close 'from' and 'to' with parentesis
black_or_white_list1 <- paste(black_or_white_list1,")", sep = "")
black_or_white_list2 <- paste(black_or_white_list2,"))", sep = "")
# mount list and at the same time replace "' '" inside var with "','"
cmdMontaVar <- gsub("''","','",(paste(black_or_white_list1,black_or_white_list2, sep="")))
#return variable as a command
return (eval(parse(text=cmdMontaVar)))
} # mount.wl.bl.list <-function(black_or_white_list)
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.