Я пытаюсь построить dyGraph с использованием временных рядов lungDeaths, но я хочу, чтобы «mdeaths» и «fdeaths» были на вторичной оси, если хотя бы один из них выбран рядом с «ldeaths».
Вот рабочий пример:
global.R
library(dygraphs)
library(shiny)
library(datasets)
library(stringr)
lungDeaths <- cbind(mdeaths, fdeaths)
ui.R
shinyUI(fluidPage(
titlePanel("Predicted Deaths from Lung Disease (UK)"),
sidebarLayout(
sidebarPanel(
id="sidebar", width = 3,
div(
checkboxGroupInput(
inputId = "selection", label = "Variables:",
choiceNames = list("ldeaths",
strong("mdeaths"),
strong("fdeaths")
),
choiceValues = c("ldeaths",
"mdeaths",
"fdeaths"), selected = "ldeaths"),
uiOutput("rendered"),
style = "font-size:75%"
)
),
mainPanel(
dygraphOutput("dygraph")
)
)
))
server.R
shinyServer(function(input, output) {
lungDeaths <- cbind(mdeaths, fdeaths, ldeaths)
rData <- reactive({
rData <- ts(lungDeaths[,input$selection])
})
output$dygraph <- renderDygraph({
if(length(input$selection) > 1 & length(str_subset(input$selection, 'ldeaths$'))>0){
if(length(str_subset(input$selection, 'fdeaths$'))>0 & length(str_subset(input$selection, 'mdeaths$'))>0){
dygraph(rData(), main = "Deaths from Lung Disease (UK)") %>%
dySeries("mdeaths", axis = 'y2') %>%
dySeries("fdeaths", axis = 'y2')
}
else if(length(str_subset(input$selection, 'mdeaths$'))>0){
dygraph(rData(), main = "Deaths from Lung Disease (UK)") %>%
dySeries("mdeaths", axis = 'y2')
}
else if(length(str_subset(input$selection, 'fdeaths$'))>0){
dygraph(rData(), main = "Deaths from Lung Disease (UK)") %>%
dySeries("fdeaths", axis = 'y2')
}
}
else
dygraph(rData(), main = "Deaths from Lung Disease (UK)")
})
})
Этот код выполняет то, что я намереваюсь сделать, но я хотел избежать использования очень многих if и else, потому что проект, с которым я на самом деле работаю, имеет 6пункты, которые должны идти к y2 при выборе. Есть ли способ сделать это без указания каждой возможности?
Я уже исследовал , как добавить dySeries на основе ввода и как сделать условную оценку при использованиитрубы , но ответы, которые я нашел до сих пор, не работают для меня. Обычно я получаю сообщение об ошибке: «
$ Оператор недопустим для атомных векторов