如何在R中闪亮地向用户显示警告。用户输入正确,但输出不适合显示。目的是仅提醒用户由于太多而显示子集数据。 String message = intent.getStringExtra("Notification Key");
// Calling the notification
createNotification(context, "title1", message, "event of today");
仅在控制台中显示。谢谢。
这是一个假代码,用于解释由于原始版本很长的问题。 renderTable中有一个警告。它的目的是检查数据是否很大,只显示前几个项目。
ui.R
warning()
server.R
shinyUI(fluidPage(
titlePanel("Validation App"),
sidebarLayout(
sidebarPanel(
selectInput("data", label = "Data set",
choices = c("", "mtcars", "faithful", "iris"))
),
# Show a plot of the generated distribution
mainPanel(
tableOutput("table"),
plotOutput("plot")
)
)
))
答案 0 :(得分:4)
我在这方面做了一些工作,并使警告小组成为条件。
但是,只有在每页上都包含textOutput("warnstat")
时,它才有效。我假设是因为它没有设置javascript变量output.warnstat
,除非我这样做。
您可以在UI中构建警告面板,并相应地进行设置。这是一个简单的例子,但它可能比仅仅是一个verabtim打印声明更精细。
shinyUI(fluidPage(
titlePanel("Validation App"),
sidebarLayout(
sidebarPanel(
selectInput("data", label = "Data set",
choices = c("", "mtcars", "faithful", "iris"))
),
# Show a plot of the generated distribution
mainPanel(
conditionalPanel(condition = "output.warnstat == 'Error'",
verbatimTextOutput("warnmsg")),
tableOutput("table"),
plotOutput("plot")
)
)
))
shinyServer(function(input, output) {
errstat <- reactive({
ifelse (input$data=="mtcars",T,F)
})
data <- reactive({
validate(
need(input$data != "", "Please select a data set")
)
get(input$data, 'package:datasets')
})
output$plot <- renderPlot({
hist(data()[, 1], col = 'forestgreen', border = 'white')
})
output$table <- renderTable({
warning("Warning message.")
head(data())
})
output$warnmsg <- renderPrint({
if (errstat()){
print("Warning message - blah blah blah")
print(input$data)
head(data())
} else {
print("No error")
}
})
output$warnstat <- renderText({ifelse(errstat(),"Error","No error") })
outputOptions(output, "warnstat", suspendWhenHidden=FALSE)
})
答案 1 :(得分:0)
我使用此包装功能捕获错误,警告和消息,并以可忽略的通知形式显示给用户。
quietly <- function(.f) {
fun <- .f %>% purrr::quietly() %>% purrr::safely()
function(...) {
res <- fun(...)
if(!is.null(res$error)) { # safely output
showNotification(res$error$message, duration = 10, type="error")
return(res$result)
}
res <- res$result # quietly output
if(!is.null(res$warnings) && length(res$warnings) > 0) {
lapply(unique(res$warnings), showNotification, duration = 10, type="warning")
}
return(res$result)
}
}