闪亮的ui.R – 标签中的错误(“div”,列表(…)) – 不知道错误在哪里

更新 – 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))
    }
  })
})

任何帮助将不胜感激,仍然试图学习闪亮(像其他人).

解决方法

在ui.R中,您不应该在此行末尾加上逗号:
sliderInput("age_cut",

此行末尾也不应有逗号

checkBoxInput(inputId = "h_own",

一般来说,您不应该在一个部分的最后一个组件之后有一个逗号.就像任何R函数一样,你通常不会用逗号结束函数调用.例如sum(5,)给出错误.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效