【问题标题】:Validate() RshinyValidate() R 闪亮
【发布时间】:2017-04-04 21:48:17
【问题描述】:

我想在 Rshiny 中使用 validate 功能。

  output$one <- renderTable({
  isolate({
  Loadprob <- input$prob1
  prob <- read.xls(Loadprob$datapath)

  validate(need(ncol(prob)==13, "Error"))

但是函数 validate 没有返回“错误”消息,我不知道为什么。

谢谢!

【问题讨论】:

  • prob 依赖于 Loadprob$datapath 所以它应该是一个反应式的。尝试prob&lt;-reacitve(read.xls(Loadprob$datapath)) 并在need 语句中将prob 更改为prob()
  • 仍然无法正常工作,我收到错误消息:警告:[:“闭包”类型的对象不是子集的错误。
  • 检查这是否有帮助 stackoverflow.com/questions/40623749/… 如果没有,请发布您的更新代码。

标签: r shiny


【解决方案1】:

我为您的代码创建了一个可重现的示例。如有其他问题,请尝试自己做。这使得查找和解决问题变得更加容易。

library(shiny)
ui <- fluidPage(
  sidebarLayout(    
    sidebarPanel(
      fileInput("prob1", label = "Excel File", multiple = F)
    ),
    mainPanel(
      tableOutput("one")
    )
  )
)
# Server logic
server <- function(input, output) {
  output$one <- renderTable({
      req(input$prob1)
      Loadprob <- input$prob1

      prob <- read.csv(Loadprob$datapath, header = T, sep = ";")
      ## prob <- read.xls(Loadprob$datapath)

      validate(need(ncol(prob)==13, "Error"))
      prob
  })
}
shinyApp(ui, server)

我使用 read.csv 而不是 read.xls,因为我无法安装 xlsx 包,但这不应该是问题。

您还必须在 renderTable 函数的开头包含一个 req(),因为它只应在文件上传时执行。

最后,您必须确定应将哪个变量绘制为表格,在本例中为“prob”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2021-06-21
    • 2018-04-03
    • 2015-05-07
    相关资源
    最近更新 更多