我想发布我的应用程序(有效)。我正在尝试通过单击发布按钮添加它(我在shinnyapps.io中有帐户)。我在部署控制台中收到错误:“错误:pkg-config找不到gtk + 2.0。 错误:包 cairoDevice 的配置失败 *删除 / usr / local / lib / R / site-library /cairoDevice “并在控制台中:”错误:HTTP 404 GET https://api.shinyapps.io/v1/applications/295881 找不到“。我的应用程序如下:
UI:
install.packages("shinydashboard")
library(shinydashboard)
library(shiny)
install.packages("rpart")
install.packages("rpart.plot")
library(rpart)
library(rpart.plot)
install.packages("rattle")
library(rattle)
library(RColorBrewer)
library(googleVis)
ui <- dashboardPage(
dashboardHeader(title = "Decision tree"),
dashboardSidebar(width = 300, hr(),
sidebarMenu(id="tab",
menuItem("Home", tabName = "dashboard", icon = icon("home")),
menuItem("Application", tabName = "app", icon = icon("leaf",lib="glyphicon"),
menuSubItem( fileInput("file", "Choose database",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")), icon = icon("hand-o-right")),
menuSubItem(uiOutput('choose_y'), icon = icon("hand-o-right")),
menuSubItem(uiOutput('choose_x'), icon = icon("hand-o-right")),
menuSubItem(actionButton(inputId ='tree', label = 'Generate tree'), icon = icon("hand-o-right"))
),
menuItem("Power-off", tabName = "power-off", icon = icon("power-off"),
menuSubItem(uiOutput('poweroff')))
)
),
dashboardBody(
tabItems(
tabItem(tabName = "dashboard"),
uiOutput("clear"),
tabItem( tabName ="app"),
tabItem(tabName = "power-off")
)
)
)
服务器:
server<-function(input, output, session) {
filedata <- reactive({
infile <- input$file
if (is.null(infile)) {
return(NULL)
}
read.csv(infile$datapath)
})
output$clear <- renderUI({
infile <- input$file
tabsetPanel(id = "tabs",tabPanel("Instruction", tableOutput("intr"), fluidRow(uiOutput("dash"))),tabPanel("Data", tableOutput("table"),fluidRow(uiOutput("view"))),tabPanel("Data analysis", tableOutput("sum"),
fluidRow(plotOutput('tree_plot', height = "650px", width="550px"),verbatimTextOutput('tree_summary'))))
})
output$dash <- renderUI({
tabItem(tabName = "w",
fluidRow(
column(12, offset = 1,
titlePanel(
p(strong("Instrukcja"),
br(),
em("Działanie aplikacji krok po kroku"))),
tags$h4("Poszczególne zakładki:"),
tags$li("Home"),
tags$div(column(12, offset=0.10,
"Zakładka zawiera instrukcję urochmienia aplikacji.")),
tags$li("Application"),
tags$div(column(12, offset=0.10,
"Zakładka służy do wygenerowania drzewa decyzyjnego.")),
tags$div(column(12, offset=0.10,
"1. Proszę wybrać bazę danych - przykład: 'iris.csv'. W razie niewybrania bazy domyślnie
tworzone jest drzewo dla wbudowanego zbioru iris.")),
column(4, offset=0.10,
tags$img(height = "80%", width = "80%", src = "baza danych.jpg"),
br()),
tags$div(column(12, offset=0.10,
"2. Następnie proszę wybrać zmienną niezależną - przykład: 'Species'.")),
column(4, offset=0.10,
tags$img(height = "80%", width = "80%", src = "zmnzal.jpg"),
br()),
tags$div(column(12, offset=0.10,
"3. Proszę zaznaczyć checkboxy z odpowiednimi predykatorami - poniżej przykładowe:")),
column(4, offset=0.10,
tags$img(height = "50%", width = "50%", src = "predyk.jpg"),
br()),
tags$div(column(12, offset=0.10,
"4. Proszę kliknąć przycisk generowania raportu:")),
column(4, offset=0.10,
tags$img(height = "50%", width = "50%", src = "gen.jpg"),
br())),
column(12, offset=1,
tags$li("Power-off"),
tags$div(column(12, offset=0.10,
"Zakładka służy do zamknięcia aplikacji.")
)
)))
})
output$view <- renderTable({
df <-filedata()
if(!is.null(input$file)) {
return(head(df))}
else{
return(head(iris))
}
})
observeEvent(input$file, {
updateTabsetPanel(session = session, inputId = "tabs", selected = "Data")
})
observeEvent(input$tree, {
updateTabsetPanel(session = session, inputId = "tabs", selected = "Data analysis")
})
output$choose_y <- renderUI({
if(!is.null(input$file)) {
df <-filedata()}
else {
df<-iris}
is.numeric <- sapply(df, FUN = is.numeric)
y_choices <- names(df)[is.numeric]
selectInput('choose_y', label = 'Choose Target Variable', choices = y_choices)
})
output$choose_x <- renderUI({
if(!is.null(input$file)) {
df <-filedata()}
else {
df<-iris}
x_choices <- names(df)[!names(df) %in% input$choose_y]
checkboxGroupInput('choose_x', label = 'Choose Predictors', choices = x_choices)
})
observeEvent(input$tree, {
if(!is.null(input$file)) {
df <-filedata()}
else {
df<-iris}
set.seed(387890)
los <- sample(1:nrow(df),
floor(.7*nrow(df)),
replace = F)
df_train <- df[los, ]
df_test <- df[-los, ]
form <- paste(isolate(input$choose_y), '~', paste(isolate(input$choose_x), collapse = '+'))
tree_fit <- eval(parse(text = sprintf("rpart(%s, data = df_train)", form)))
output$tree_summary <- renderPrint(summary(tree_fit))
output$tree_plot<- renderPlot({
plot(tree_fit)
text(tree_fit)
fancyRpartPlot(tree_fit)
})
})
output$poweroff <- renderUI({
stopApp()
})
}