Note that there are some explanatory texts on larger screens.

plurals
  1. POShiny ui.R - Error in tag("div", list(...)) - not sure where error is
    primarykey
    data
    text
    <p><strong>Update - 12/17/2012 9am CDT</strong>: example has been updated with demo data and full code. <strong>[/update].</strong></p> <p><strong>Example Data:</strong> <a href="https://gist.github.com/4318774">https://gist.github.com/4318774</a></p> <p><em>Description:</em> I've been playing around with the new Shiny package (love it!) but don't yet understand an error I'm getting when I <code>runApp("")</code>. Error is <code>Error in tag("div", list(...)): argument is missing</code>. </p> <p>I'm trying to create an interactive web-app for graphical exploration of demographic data. I'm using the following as guides: <br> <a href="https://gist.github.com/4026749">https://gist.github.com/4026749</a> <br> <a href="http://rstudio.github.com/shiny/tutorial/">http://rstudio.github.com/shiny/tutorial/</a></p> <p>with <code>options(error= recover)</code>, I get:</p> <pre><code>Listening on port 8100 Error in tag("div", list(...)) : argument is missing, with no default Enter a frame number, or 0 to exit 1: runApp("//~~my app~~") 2: tryCatch(while (TRUE) { serviceApp(ws_env) }, finally = { timerCallbacks$clear() websocket_close(ws_env) }) 3: tryCatchList(expr, classes, parentenv, handlers) 4: serviceApp(ws_env) 5: service(server = ws_env, timeout = timeout) 6: server$static(j, J$wsinfo) 7: handler(ws, header) 8: handler(ws, header) 9: local({ cacheContext$with(function() { source(filePath, local = new.env(parent = .GlobalEnv)) }) }) 10: eval.parent(substitute(eval(quote(expr), envir))) 11: eval(expr, p) 12: eval(expr, envir, enclos) 13: eval(quote({ cacheContext$with(function() { source(filePath, local = new.env(parent = .GlobalEnv)) }) 14: eval(expr, envir, enclos) 15: cacheContext$with(function() { source(filePath, local = new.env(parent = .GlobalEnv)) }) 16: func() 17: source(filePath, local = new.env(parent = .GlobalEnv)) 18: withVisible(eval(ei, envir)) 19: eval(ei, envir) 20: eval(expr, envir, enclos) 21: ui.R#6: shinyUI(pageWithSidebar(headerPanel("Demographics Web Demo - Eglin Data"), sidebarPanel(textInput("plot.ti 22: force(ui) 23: pageWithSidebar(headerPanel("Demographics Web Demo - Eglin Data"), sidebarPanel(textInput("plot.title", "Title:", 24: bootstrapPage(div(class = "container-fluid", div(class = "row-fluid", headerPanel), div(class = "row-fluid", sideb 25: tagList(importBootstrap(), list(...)) 26: div(class = "container-fluid", div(class = "row-fluid", headerPanel), div(class = "row-fluid", sidebarPanel, mainP 27: tags$div(...) 28: tag("div", list(...)) 29: div(class = "row-fluid", sidebarPanel, mainPanel) 30: tags$div(...) 31: tag("div", list(...)) 32: sidebarPanel(textInput("plot.title", "Title:", "Population Pyramid of Members"), wellPanel(p(strong("Demographic o 33: div(class = "span4", tags$form(class = "well", ...)) 34: tags$div(...) 35: tag("div", list(...)) 36: tags$form(class = "well", ...) 37: tag("form", list(...)) 38: wellPanel(p(strong("Demographic of Interest")), checkboxInput(inputId = "age_dist", label = "Age Distribution", va 39: div(class = "well", ...) 40: tags$div(...) 41: tag("div", list(...)) </code></pre> <p>I tried investigating what was going on, but ?checkboxInput made the code look accurate. It also is pretty much a direct copy of the "stocks" example from RStudio (github linked above)</p> <p><em><code>ui.R</code> / <code>Server.R</code> code:</em> <br> <code>ui.R</code> </p> <pre><code>library(shiny) shinyUI(pageWithSidebar( # application title headerPanel("Demographics Web Demo - Eglin Data"), # sidebar with controls to allow user to define graphical elements and how # they want them displayed. sidebarPanel( # allow the user to write a plot Title textInput("plot.title", "Title:", "Population Pyramid of Members"), # allow the user to determine which demographic they want to plot wellPanel( p(strong("Demographic of Interest")), checkboxInput(inputId = "age_dist", label = "Age Distribution", value = TRUE), checkboxInput(inputId = "wealth_dist", label = "Household Wealth", value = FALSE), checkboxInput(inputId = "home_val", label = "Home Value", value = FALSE), checkboxInput(inputId = "ed_level", label = "Members' Education", value = FALSE), checkboxInput(inputId = "inc_level", label = "Members' Est. Income", value = FALSE), checkboxInput(inputId = "h_own", label = "Homeownership", value = FALSE), ), # allow the user to determine age-bracket size. Input used in plotting sliderInput("age_cut", "Select Size of Age Brackets:", min= 3, max= 20, value= 5), # allow the user to subset their demographics by age range #sliderInput("age_sub", "Please select the age range you would like to 'zoom-in' on:", # min= 0, max= 120, value= c(15,65)), ), # display the appropriate graphics based on the user selections defined # above. mainPanel( h3(textOutput("caption")), conditionalPanel(condition= "input.age_dist", plotOutput(outputId= "plot_age")), conditionalPanel(condition= "input.wealth_dist", plotOutput(outputId= "plot_wealth")), conditionalPanel(condition= "input.home_val", plotOutput(outputId= "plot_home_value")), conditionalPanel(condition= "input.ed_level", plotOutput(outputId= "plot_edu")), conditionalPanel(condition= "input.inc_level", plotOutput(outputId= "plot_inc")), conditionalPanel(condition= "input.h_own", plotOutput(outputId= "plot_h_own")) ) )) </code></pre> <p><code>server.R</code> <br></p> <pre><code># require packages if (!require(ggplot2)) { stop("This application requires ggplot2. To install it, please run 'install.packages(\"ggplot2\")'.\n") } if (!require(plotrix)) { stop("This application requires plotrix. To install it, please run 'install.packages(\"plotrix\")'.\n") } library(shiny) # load example demo data load("~~you'll need to load the test data here") shinyServer(function(input, output) { # reactive function based on user input for plot title # This function is automatically called to update the display output$caption &lt;- reactiveText(function() { input$plot.title }) updateAge_f &lt;- reactive(function() { # re-define age brackets based on user input demos$age_f &lt;- ordered(cut(demos$age, breaks= c(seq(0, max(demos$age), input$age_cut)), include.lowest= T)) }) # Generate a plot of the Members' age distribution output$plot_age &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() # develop input vectors male &lt;- as.vector(table(demos$age_f, demos$female_flag)[,1]/summary(demos$female_flag)[1] * 100) women &lt;- as.vector(table(demos$age_f, demos$female_flag)[,2]/summary(demos$female_flag)[2] * 100) # create plot pyramid.plot(lx= male, rx= women, labels= levels(demos$age_f), lxcol= "blue", rxcol= "pink", main= "Population Pyramid of Members", gap= 2, labelcex= .75) }) # generate a plot of members' wealth codes output$plot_wealth &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() if (input$factor_age == TRUE) { ggplot(demos2, aes(wealth)) + geom_bar() + facet_wrap(~ age_f, ncol= 3) + theme_bw() + labs(title= "Wealth of Members by Age Bracket", y= "Count of Individuals", x= "Decile of Wealth (by State)") + theme(axis.text.x= element_text(angle= 90)) } else if (input$factor_age == FALSE) { ggplot(demos2, aes(wealth)) + geom_bar() + theme_bw() + labs(title= "Wealth of Members of your Members", y= "Count of Individuals", x= "Decile of Wealth (by State)") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of home value of members' properties output$plot_home_value &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() if (input$factor_age == TRUE) { ggplot(demos2, aes(home_value)) + geom_bar() + facet_wrap(~ age_f, ncol= 3) + theme_bw() + labs(title= "Home Value by Age Bracket", y= "Count of Individuals", x= "Home Value") + theme(axis.text.x= element_text(angle= 90)) } else if (input$factor_age == FALSE) { ggplot(demos2, aes(home_value)) + geom_bar() + theme_bw() + labs(title= "Home Value of your Members", y= "Count of Individuals", x= "Home Value") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of education distribution output$plot_edu &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() if (input$factor_age == TRUE) { ggplot(demos2, aes(ed_code)) + geom_bar() + facet_wrap(~ age_f, ncol= 3) + theme_bw() + labs(title= "Education Level by Age Bracket", y= "Count of Individuals", x= "Education Level") + theme(axis.text.x= element_text(angle= 90)) } else if (input$factor_age == FALSE) { ggplot(demos2, aes(ed_code)) + geom_bar() + theme_bw() + labs(title= "Education Level of your Members", y= "Count of Individuals", x= "Education Level") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of members' estimated income levels output$plot_inc &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() if (input$factor_age == TRUE) { ggplot(demos2, aes(inc)) + geom_bar() + facet_wrap(~ age_f, ncol= 3) + theme_bw() + labs(title= "Estimated Income by Age Bracket", y= "Count of Individuals", x= "Estimated Income Range") + theme(axis.text.x= element_text(angle= 90)) } else if (input$factor_age == FALSE) { ggplot(demos2, aes(inc)) + geom_bar() + theme_bw() + labs(title= "Estimated Income of your Members", y= "Count of Individuals", x= "Estimated Income Range") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of members' homeownership output$plot_h_own &lt;- reactivePlot(function() { # call to update age factor if needed updateAge_f() if (input$factor_age == TRUE) { ggplot(demos2, aes(homeOwner)) + geom_bar() + facet_wrap(~ age_f, ncol= 3) + theme_bw() + labs(title= "Home Ownership by Age Bracket", y= "Count of Individuals", x= "Home Owner / Renter") + theme(axis.text.x= element_text(angle= 90)) } else if (input$factor_age == FALSE) { ggplot(demos2, aes(homeOwner)) + geom_bar() + theme_bw() + labs(title= "Home Ownership of your Members", y= "Count of Individuals", x= "Home Owner / Renter") + theme(axis.text.x= element_text(angle= 90)) } }) }) </code></pre> <p>Any help would be appreciated, still trying to learn shiny (like everyone else).</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload