show_html <- function(x,output=NULL,...){ ht <- format_html(x,...) if(interactive()){ # Test whether running under RStudio isRStudio <- Sys.getenv("RSTUDIO") == "1" if(isRStudio) deflt.output <- "file-show" else deflt.output <- "browser" } else deflt.output <- "stdout" if(missing(output)) output <- getOption("html_viewer",deflt.output) if(mode(output)=="character") output <- match.arg(output,c("stdout","browser","file-show")) else if(!is.function(output)) stop("'output' should be either a character string of a function") if(is.function(output)){ tf <- tempfile() tf <- paste0(tf,".html") cat(ht,file=tf) output(tf) } else if(nzchar(Sys.getenv("JPY_PARENT_PID"))){ ## Inside Jupyter return(html_div(ht)) } else if(output=="stdout") cat(ht) else { tf <- tempfile() tf <- paste0(tf,".html") cat(ht,file=tf) if(output=="file-show") file.show(tf,title=deparse(substitute(x))) else browseURL(tf) } } write_html <- function(x,file,...) cat(format_html(x,...),file=file) format_html <- function(x,...) UseMethod("format_html") spltDec <- function(x,at="."){ y <- strsplit(x,at,fixed=TRUE) y1 <- sapply(y,"[",1) y3 <- sapply(y,"[",2) y1[is.na(y1)] <- "" y3[is.na(y3)] <- "" y2 <- ifelse(grepl("[[:digit:]]+",y3),at,"") y <- rbind(y1,y2,y3) as.vector(y) } upd_vect <- function(x,...){ y <- c(...) n <- names(y) x[n] <- y x }