Мой сюжет полностью ложен, когда я запустил свой shinyapp.Я выбрал все переменные "страна" с помощью pickerInput ShinyWidget, и он должен был создать сложенный график geom_col со всей страной на оси X, значением доступной переменной (на основе выбранных "Год" и "Запись"") по оси Y.Но в результате получается, что в списке стран не хватает 90%, а «Записи» не складываются, а генерируются отдельно и не все.Каждый раз, когда я изменяю переменную, я получаю сообщение об ошибке:
Предупреждение в ==.default
(страна, ввод $ страна): длинная длина объекта не кратна короткой длине объекта Предупреждение в is.na (e1)|is.na (e2): длинная длина объекта не кратна короткой длине объекта
Раньше я плавил набор данных и тоже получал это:
Предупреждение: атрибуты не одинаковы по мере измеренияпеременные;они будут отброшены
Мне нужна помощь с ошибками, которые я получаю, особенно в моем коде
library(shiny)
library(shinydashboard)
library(ggplot2)
library(dplyr)
library(plotly)
library(DT)
library(shinythemes)
library(shinyWidgets)
library(gganimate)
library(reshape2)
NFA <- read.csv("NFA 2018 Edition.csv")
NFA$year <- as.factor(NFA$year)
levels(NFA$record)
levels(NFA$record)[levels(NFA$record) == "BiocapPerCap"] <- "Biocapacity (gha per person)"
levels(NFA$record)[levels(NFA$record) == "BiocapTotGHA"] <- "Biocapacity (gha)"
levels(NFA$record)[levels(NFA$record) == "EFConsPerCap"] <- "Ecological Footprint (gha per person)"
levels(NFA$record)[levels(NFA$record) == "EFConsTotGHA"] <- "Ecological Footprint (gha)"
уровни (запись NFA $)
NFA <- NFA %>%
select(country,year, record, crop_land,grazing_land,forest_land,fishing_ground,built_up_land,carbon)
NFA <- melt(data = NFA, id = c("country","year","record"))
уровни (Переменные NFA $) (запись NFA $)
Определить пользовательский интерфейс для приложения
ui <- fluidPage(
titlePanel(title = "Global Footprint Network: Comparing Countries"),
hr(),
fluidRow(
#FirstInput
column(width = 6,
pickerInput(
inputId = "country",
label = "Select Country or Region:",
choices = levels(NFA$country),
options = list('actions-box' = TRUE),
multiple = TRUE,
selected = levels(NFA$country),
width = "100%"
)
),
#SecondInput
column(width = 6,
selectInput(
inputId = "year",
label = "Select Year:",
choices = levels(NFA$year),
selected = 2013,
width = "120%"
)
)
),
fluidRow(
#ThirdInput
tags$style(HTML(".radio-inline {margin-right: 23px;}")),
column(width = 12,
radioButtons(
inputId = "type",
label = "Select Type:",
choices = c("Biocapacity (gha per person)",
"Biocapacity (gha)",
"Ecological Footprint (gha per person)",
"Ecological Footprint (gha)"),
selected = "Ecological Footprint (gha per person)",
inline = T
)
)
),
fluidRow(
column(width = 12,
tabsetPanel(
tabPanel(
"Plot",
plotlyOutput(outputId = "NFAplot")
),
tabPanel(
"Data Table",
dataTableOutput(
outputId = "nfadata"),
style = 'overflow-x : scroll, overflow-y : scroll'
)
)
)
)
)
Определить логику сервера
server <- function(input, output, session) {
output$NFAplot <- renderPlotly({
NFAep <- NFA %>%
filter(record == input$type,
year == input$year,
country == input$country) %>%
ggplot(aes(x = country,y = value)) +
geom_col(aes(fill = variable), position = "stack")
ggplotly(NFAep)
})
model.data <- reactive({
subset(NFA, record %in% input$type & year %in% input$year & country %in% input$country)
})
output$nfadata <- renderDataTable({model.data()})
}
Запустить приложение
shinyApp(ui = ui, server = server)