차트와 데이터 테이블을 생성하는 Shiny 앱을 가지고 있으며 차트의 y 축은 테이블 열의 최대 값에 연결됩니다. 일부 사용자 입력으로 필터링됩니다. 이 동일한 값을 sliderInput의 최대 값으로 지정하여 사용자가 드롭 다운에서 다른 항목을 선택할 때마다 값이 변경된다는 점에서 동적입니다.최대 sliderInput 값을 테이블 열의 최대 값에 연결합니다.
테이블은 드롭 다운을 기반으로 필터링되며 테이블에는 '가격 지수'라는 열이 있습니다. 예를 들어 사용자가 '빵'을 선택하면 테이블의 '가격 지수'열의 최대 값을 기준으로 max sliderInput 값을 변경합니다.
여기 내 샤이니 코드에서 서버 기능 위에있는 기능을 뺀 것이 있습니다.
server <- function(input, output, session) {
output$priceplot <- renderPlot(
{
Price_Score(input$s_ranks[1], input$s_ranks[2], input$s_index[1], input$s_index[2], input$subsec)
}
)
output$table <- DT::renderDataTable(
DT::datatable(
pricing_data[pricing_data$section_lower == input$subsec]
)
)
session$onSessionEnded(
function() {
stopApp()
}
)
onSessionEnded = function(callback) {
return(.closedCallbacks$register(callback))
}
}
####
ui <- fluidPage(
titlePanel("Price Score Optimisation"),
fluidRow(
column(3,
wellPanel(
h4("Filters"),
sliderInput("s_index", "Select Price Index Values",
0, 350, c(0, 50), step = 10),
sliderInput("s_ranks", "Select ranks", 0, 22000, value = c(1000, 15000)),
selectInput(
"subsec",
"Subsections",
choices = unique(as.character(pricing_data$section_lower)),
selected = TRUE,
multiple = FALSE,
selectize = FALSE
)
)
),
column(9,
plotOutput("priceplot")
)
),
fluidRow(DT::dataTableOutput("table")
)
)
shinyApp(ui = ui, server = server)
나는 서버 함수 내에서 이것을 시도하지만 콘솔에 오류가 있었다 :
observe({
val <- max(DT::datatable(
pricing_data[pricing_data$section_lower == input$subsec, .(`Price Index`)][1])
)
# Control the value, min, max, and step.
# Step size is 2 when input value is even; 1 when value is odd.
updateSliderInput(session, "s_index",
min = 0, max = val+50, step = 10)
})
이 오류가 Warning: Error in max: invalid 'type' (list) of argument
했다 어떤 도움이 많이 감사합니다. 또 다른 문제는이 기본이 있는지
감사합니다. 나는 약간 수정했다 : 'as.integer (max (unlist (pricing_data [section_lower == 입력 $ subsec,. ('Price Index')])))') – MidnightDataGeek