अपडेट - 12/17/2012 9am सीडीटी: उदाहरण डेमो डेटा और पूर्ण के साथ अपडेट किया गया है कोड। [/ अपडेट]।चमकदार ui.R - टैग में त्रुटि ("div", सूची (...)) - सुनिश्चित नहीं है कि त्रुटि कहां है
उदाहरण डेटा:https://gist.github.com/4318774
विवरण: मैं चारों ओर नई चमकदार पैकेज के साथ खेल किया गया है (! इसे प्यार करता हूँ), लेकिन अभी तक एक त्रुटि मैं हो रही है समझ में नहीं आता है जब मैं runApp("")
। त्रुटि Error in tag("div", list(...)): argument is missing
है।
मैं जनसांख्यिकीय डेटा के ग्राफिकल अन्वेषण के लिए एक इंटरैक्टिव वेब-ऐप बनाने की कोशिश कर रहा हूं। मैं गाइड के रूप में निम्नलिखित का उपयोग कर रहा:
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) से "स्टॉक" उदाहरण का एक सीधा कॉपी है
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\")'.\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, 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))
}
})
})
किसी भी मदद की सराहना की जाएगी, अभी भी चमकदार सीखने की कोशिश कर रहा है (जैसे ev अन्य सभी)।
क्या "# ... अधिक अनुसरण करने के लिए ..." का अर्थ है कि वहां और कोड है जो आप हमें नहीं दिखा रहे हैं? – GSee
नहीं, इसका मतलब है कि मैं –
लिखने की योजना बना रहा हूं, यह एकमात्र चीज है जो मुझे लगता है कि संदिग्ध लग रहा है कि आप स्लाइडर इनपुट() में मूल्य के लिए एक ही संख्या उत्तीर्ण कर रहे हैं, जब, विशेष रूप से यदि यह एक सीमा है, तो आप ' सी (नीचे, शीर्ष) –