闪亮的ui.R-标记错误(";div";,列表(.))-不确定错误在哪里 [英] Shiny ui.R - Error in tag("div", list(...)) - not sure where error is
本文介绍了闪亮的ui.R-标记错误(";div";,列表(.))-不确定错误在哪里的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
更新-2012-12-17 9 am CDT:示例已更新,包含演示数据和完整代码。[/update]。
示例数据:https://gist.github.com/4318774
说明:
我一直在玩新的闪闪发光的包裹(爱死它了!)但是我还不理解我在runApp("")
时收到的错误。错误为Error in tag("div", list(...)): argument is missing
。
我正在尝试创建一个交互式Web应用程序,用于以图形方式探索人口统计数据。我使用以下内容作为指导:
https://gist.github.com/4026749
http://rstudio.github.com/shiny/tutorial/
使用options(error= recover)
,我得到:
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(...))
我试图调查发生了什么,但是checkboxInput使代码看起来很准确。它也几乎是RStudio(上面链接的GitHub)中"STOCKS"示例的直接副本
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", "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"))
)
))
server.R
# require packages
if (!require(ggplot2)) {
stop("This application requires ggplot2. To install it, please run 'install.packages("ggplot2")'.
")
}
if (!require(plotrix)) {
stop("This application requires plotrix. To install it, please run 'install.packages("plotrix")'.
")
}
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, 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 <- 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 <- 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 <- 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 <- 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 <- 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))
}
})
})
如有任何帮助,我们将不胜感激,因为您仍在努力(像其他人一样)学习闪亮。
推荐答案
在ui.R中,此行末尾不应该有逗号:
sliderInput("age_cut", "Select Size of Age Brackets:",
min= 3, max= 20, value= 5),
此行末尾也不应有逗号
checkboxInput(inputId = "h_own", label = "Homeownership", value = FALSE),
一般来说,节的最后一个组成部分后面不应该有逗号。与任何R函数一样,您通常不会以逗号结束函数调用。例如,sum(5,)
显示错误。
这篇关于闪亮的ui.R-标记错误(";div";,列表(.))-不确定错误在哪里的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文