0
我沒有什麼問題。我已經構建了一個名爲d3K的包,可以跨不同的儀表板使用。其中一個函數如下:如何使用具有傳遞函數的功能在輸出閃爍時具有反應
conditionalRenderValueBox <- function(value, title, red_limit, yellow_limit){
renderValueBox( valueBox(value, title,
color = if(class(value)=="character" | is.na(value)){
"blue"
}else if(value>red_limit){
"red"
}else if(value>yellow_limit){
"yellow"
}else{
"green"
}
))
}
現在我試圖在函數中傳遞值參數,其中參數是無效值。
server.R
library(lubridate)
# library(googleVis)
# library(readr)
library(shinyjs)
library(ggplot2)
library(plotly)
library(d3K)
library(dplyr)
server <- function(input, output, session) {
v1 = reactive({
input$v1
})
f <- reactive({
if(is.na(v1())){
"WAI"
}else{
runif(1, 1, 10)
}
})
output$t <- conditionalRenderValueBox(f(), "Possible Value", 15, 10)
}
ui.R
library(shinydashboard)
library(shiny)
library(shinyjs)
library(plotly)
ui <- dashboardPage(
dashboardHeader(title = "DashBoard")
,skin = 'yellow'
,dashboardSidebar(
tags$head(
tags$style(HTML("
.sidebar { height: 90vh; overflow-y: auto; }
")
)
),
sidebarMenu(
menuItem("R", tabName = "R", icon = icon("cog"))
, selectInput("v1", label = h3("Select box"),
choices = list(1, 11, 15),
selected = 1),
)
)
,dashboardBody(
tabItems(
tabItem(
tabName = "R"
, br()
, fluidRow(
valueBoxOutput("t")
)
)
)
)
)
我不能看到數值框閃亮的儀表板。
但是,如果使用後在服務器輸出$ T plase代碼,它的工作原理
output$t <- renderValueBox( valueBox(f(), "title",
color = if(class(f())=="character" | is.na(f())){
"blue"
}else if(f()>red_limit){
"red"
}else if(f()>yellow_limit){
"yellow"
}else{
"green"
}
))
然後我能看到結果如預期
對於我來說,這個工作,當我選擇了第二次,它保持第一值 –
問題不在於'conditionalRenderValueBox'。當我有解決方案時,我將編輯我的答案 – Carl
我編輯了我的答案。我不確定是否有一個超級滿意的解決方案來解決您的問題。 – Carl