更新 – 12/17/2012 9am CDT:示例已更新演示数据和完整代码. [/更新].
示例数据:https://gist.github.com/4318774
描述:
我一直在玩新的Shiny包(喜欢它),但是还没有明白当我运行appApp(“”)时会发生错误.错误是标记错误(“div”,list(…)):缺少参数.
我正在尝试创建一个交互式网络应用程序,用于图形化的人口统计数据.我使用以下作为指南:
https://gist.github.com/4026749
http://rstudio.github.com/shiny/tutorial/
与选项(错误=恢复),我得到:
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,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,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),sideb 25: tagList(importBootstrap(),list(...)) 26: div(class = "container-fluid",sidebarPanel,mainP 27: tags$div(...) 28: tag("div",list(...)) 29: div(class = "row-fluid",mainPanel) 30: tags$div(...) 31: tag("div",list(...)) 32: sidebarPanel(textInput("plot.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(...))
我尝试调查发生了什么,但是checkBoxInput使代码看起来很准确.它也是RStudio(github linked above)上的“股票”示例的直接副本
ui.R / Server.R代码:
ui.R
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",# allow the user to determine which demographic they want to plot wellPanel( p(strong("Demographic of Interest")),value = TRUE),checkBoxInput(inputId = "wealth_dist",label = "Household Wealth",value = FALSE),checkBoxInput(inputId = "home_val",label = "Home Value",checkBoxInput(inputId = "ed_level",label = "Members' Education",checkBoxInput(inputId = "inc_level",label = "Members' Est. Income",checkBoxInput(inputId = "h_own",label = "Homeownership",),# 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")) ) ))
server.R
# 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 <- reactiveText(function() { input$plot.title }) updateAge_f <- reactive(function() { # re-define age brackets based on user input demos$age_f <- 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 <- reactivePlot(function() { # call to update age factor if needed updateAge_f() # develop input vectors male <- as.vector(table(demos$age_f,demos$female_flag)[,1]/summary(demos$female_flag)[1] * 100) women <- as.vector(table(demos$age_f,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 <- 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",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 <- 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",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",x= "Home Value") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of education distribution output$plot_edu <- 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",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",x= "Education Level") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of members' estimated income levels output$plot_inc <- 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",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",x= "Estimated Income Range") + theme(axis.text.x= element_text(angle= 90)) } }) # generate a plot of members' homeownership output$plot_h_own <- 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",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",x= "Home Owner / Renter") + theme(axis.text.x= element_text(angle= 90)) } }) })
任何帮助将不胜感激,仍然试图学习闪亮(像其他人).