【问题标题】:Updated codes using Reactive values使用 Reactive 值更新代码
【发布时间】:2017-07-19 08:45:01
【问题描述】:

我希望构建一个交互式数据可视化。 我的数据集包含 1244 个 obs 和 9 个变量 分享以下数据截图: Screenshot of sample Dataset

数据可视化流程:

  1. 从输入框中选择公司名称,它将给出一个输出表(主数据集中该公司的子集)

  2. 从输入框中选择上述compary的DIR

  3. 删除 DIR 后,如果存在,它将给出公司名称的输出(在检查主数据集后)。

下面提供了我编写的代码,但它不起作用。我会感谢宝贵的意见。提前致谢。

用户界面

navbarPage(
title = "SHELL COMPANY",
tabPanel("COMPANY INFO",
fluidRow(
  column(4, selectInput("name","COMPANY NAME:", c("ALL", unique(as.character(cmp$`STD COMPANY NAME`))))),
  column(4, DT::dataTableOutput("table")
  ))),
tabPanel("DIR INFO",
  fluidRow(
    column(4, selectInput("dir","DIRECTOR NAME:", sort(unique(as.character(cmp$`DIR NAME`)))))),
  column(4, DT::dataTableOutput("table2"))
))

服务器

function(input,output)
{
data <- cmp
rv <- reactiveValues() 
observe({
rv$table <-  cmp
if(input$name!="ALL"){
  rv$table <- data[data$`STD COMPANY NAME`==input$name,]
} 
})
output$table <- DT::renderDataTable(DT::datatable(
{
  rv$table
}))
output$table2 <- DT::renderDataTable(DT::datatable(
{
  data2 <- rv$table
  data2 <- subset(rv$table, data$'DIR NAME'==input$dir, select=c(`STD COMPANY NAME`, `DIR NAME`))
  data2
}))}

【问题讨论】:

  • 一个使用 dput() 的小数据集,seee stackoverflow.com/questions/5963269/… 会很有帮助。
  • 编辑时,我在 output$table2 中移动了一个大括号。检查这是否改变了一些东西。请说明您面临的错误。
  • 为什么subset(data, data$'DIR NAME'==input$dir, select = ....中的引号不同?
  • @ClaudH:谢谢你,我纠正了。我收到的错误是 table$STD COMPANY NAME 中的错误:'closure' 类型的对象不是子集
  • @K.Rohde:表$STD COMPANY NAME 中的错误:“闭包”类型的对象不是子集。

标签: r shiny


【解决方案1】:

如果您提供的 sn-p 是您在应用程序中获得的关于该错误的全部信息,那么您似乎尝试将 output$table 分配给 output$table2 data2 &lt;- table 内的另一个变量。你不能这样分配output$...。尝试创建单独的表(?reactiveValues() 可能会派上用场),并在两个输出中使用它,因此逻辑如下所示:

rv <- reactiveValues() 
observe({
    rv$table <-  cmp
    if(input$name!="ALL"){
      rv$table <- data[data$`STD COMPANY NAME`==input$name,]
    } 
})

然后在output$tableoutput$table2 中都使用它

【讨论】:

  • reactiveValues() 确实有效。我面临的最后一个问题是我只想突出显示 tableoutput(table) 中的那些 DIR NAME。我现在使用这个命令 column(4, selectInput("dir","DIRECTOR NAME:", sort(unique(as.character(cmp$DIR NAME)))))) ,我知道这是错误的。我应该叫什么而不是 cmp$DIR NAME??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多