#' Shiny view of data
#' @export
#' @import shiny
#' @import miniUI
#' @param datain Provide a data frame or a list of data frames to explore
#' @param location Location to make app appear. Can choose either "dialog"
#' or pane
#'
#' @return A shiny box, which, when options are chosen, will put a View command into the console
viewenhanceAddin<- function(datain = NULL, location = c("dialog", "pane")) {
location <- match.arg(location)
if (!is.null(datain)){
if(is.character(datain)){
datalist <- datain
datain <- tryCatch({get(datain, envir = .GlobalEnv)},
error = function(e){stop(paste0("Provided data frame name ",
datain,
" does not exist in global enviornment"))})
list_true <- FALSE
}
else if (is.data.frame(datain)){
datalist <- deparse(substitute(datain))
list_true <- FALSE
}else if (is.list(datain)){
datframes <- datain[unlist(Map(is.data.frame, datain))]
if (length(datframes) == 0){
stop("None of the objects in the inputted list are data frames")
}
list_true <- TRUE
datalist <- paste0(deparse(substitute(datain)),'$', names(datframes))
}else{
stop("datain needs to be a data frame or a list containing data frames")
}
}else{
list_true = TRUE
#Check which objects in the name space have a dimension. If the environment is empty, return said error
datalist <- tryCatch({
ls(envir = .GlobalEnv)[unlist(lapply(mget(ls(envir = .GlobalEnv), envir = .GlobalEnv) , is.data.frame))]},
error = function(e) stop("There are no data frames in the global environment!"))
#if there are no dimensional objects, error
if (length(datalist) == 0)
{
stop("The global environment does not include any objects with dimensions!")
}
}
ui <- gen_ui(datain, datalist, location)
if(is.null(datain)){
datalist <- "NULL"
}
if(is.list(datain)){
datalist <- deparse(substitute(datain))
}
server <- server_in(datain, list_true, datalist, location)
environment(server) <- environment()
# Use a modal dialog as a viewr.
if (location=="dialog"){
viewer <- dialogViewer("Subset", width = 1000, height = 800)
}else{
viewer <- paneViewer(minHeight = 800)
}
#note we suppress messages. We remove this when debugging :)
#suppressMessages(suppressWarnings(runGadget(ui, server, viewer = viewer)))
runGadget(ui, server, viewer = viewer)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.