如何从 R Shiny 应用程序中数据表中的选定行获取行值

2024-02-11

我需要从 DT 数据表中获取所选行第一列的值。使用,数据表 rows_selected,我能够获取选定的行数,现在我正在寻找从数据表中提取行值的方法。在下面的例子中,有两个观察事件基于操作按钮,第一个观察事件被导入并显示数据,第二个观察事件需要显示所选行的第一个列值,以便我可以使用相同的功能实现其他功能。请注意,在实际应用中,导入的数据是一个 Web 服务 API,我正在 R 中解析它并转换为数据帧。

示例示例:

library(shiny)
library(shinydashboard)
library(DT)

ui <- dashboardPage(
dashboardHeader(title = "Data Table Example"),
dashboardSidebar(
sidebarMenu(
  menuItem('Tabs', tabName='tabs',
           menuSubItem('Tab 1', tabName='tab1'),
           menuSubItem('Tab 2', tabName='tab2')
  )
)
),

dashboardBody(

tabItems(
  tabItem(tabName='tab1',
          actionButton("import","Import"),
          br(),
          tags$div(tags$h3(tags$b(" Get Selected Row Values",align="middle",style="color: rgb(57,156,8)"))),
          br(),
          DT::dataTableOutput('ProductDataTable')
  ),
  tabItem(tabName='tab2',
          actionButton("display","Display"),
          uiOutput('info')
   )
 )
 )
 )

server <- function(input, output) {

observeEvent(input$import,{

Product <- read.csv2("RulesData.csv", header=TRUE, sep=";")

output$ProductDataTable <- DT::renderDataTable({

DT::datatable(Product,selection = "single",

                extensions = c('Buttons', 'ColReorder', 'FixedHeader', 'Scroller'),
                rownames=FALSE,
                options=list(dom = 'Bfrtip',
                             searching = T,
                             pageLength = 25,
                             searchHighlight = TRUE,
                             colReorder = TRUE,
                             fixedHeader = TRUE,
                             filter = 'bottom',
                             buttons = c('copy', 'csv','excel', 'print'),
                             paging    = TRUE,
                             deferRender = TRUE,
                             scroller = TRUE,
                             scrollX = TRUE,
                             scrollY = 700

                ))
})

})

observeEvent(input$display,{

row_count <- input$ProductDataTable_rows_selected

output$info <- renderPrint({

  cat('Row Selected: ')
  cat(row_count, sep = ', ')
  cat(Product[1,2], sep = ', ')


 })

})
}

shinyApp(ui, server)

如果这是您正在寻找的内容,请检查下面的代码:

library(shiny)
library(shinydashboard)
library(DT)

ui <- dashboardPage(
  dashboardHeader(title = "Data Table Example"),
  dashboardSidebar(
    sidebarMenu(
      menuItem('Tabs', tabName='tabs',
               menuSubItem('Tab 1', tabName='tab1'),
               menuSubItem('Tab 2', tabName='tab2')
      )
    )
  ),

  dashboardBody(

    tabItems(
      tabItem(tabName='tab1',
              actionButton("import","Import"),
              br(),
              tags$div(tags$h3(tags$b(" Get Selected Row Values",align="middle",style="color: rgb(57,156,8)"))),
              br(),
              DT::dataTableOutput('ProductDataTable')
      ),
      tabItem(tabName='tab2',
              actionButton("display","Display"),
              uiOutput('info')
      )
    )
  )
)

server <- function(input, output) {

  Product <- reactive({mtcars})

  observeEvent(input$import,{


    output$ProductDataTable <- DT::renderDataTable({

      DT::datatable(Product(),selection = "single",

                    extensions = c('Buttons', 'ColReorder', 'FixedHeader', 'Scroller'),
                    rownames=FALSE,
                    options=list(dom = 'Bfrtip',
                                 searching = T,
                                 pageLength = 25,
                                 searchHighlight = TRUE,
                                 colReorder = TRUE,
                                 fixedHeader = TRUE,
                                 filter = 'bottom',
                                 buttons = c('copy', 'csv','excel', 'print'),
                                 paging    = TRUE,
                                 deferRender = TRUE,
                                 scroller = TRUE,
                                 scrollX = TRUE,
                                 scrollY = 700

                    ))
    })

  })

  observeEvent(input$display,{


    output$info <- renderPrint({
      row_count <- input$ProductDataTable_rows_selected
      data <- Product()[row_count, ] 
      cat('Row Selected: ')
      cat(data[,1]) #display the selected row 1st col value  


    })

  })
}

shinyApp(ui, server)

我用过mtcars以数据集为例,问题是您的数据位于observer(一个与input$import)并且由于您需要将其用于其他分析,例如显示第一列的行值(我不太明白您的意思,因为您的代码讲述了不同的事情),因此数据必须移至observer并放入reactive.

[UPDATE]

我用过if语句来导入数据而不是observeEvent

library(shiny)
library(shinydashboard)
library(DT)

ui <- dashboardPage(
  dashboardHeader(title = "Data Table Example"),
  dashboardSidebar(
    sidebarMenu(
      menuItem('Tabs', tabName='tabs',
               menuSubItem('Tab 1', tabName='tab1'),
               menuSubItem('Tab 2', tabName='tab2')
      )
    )
  ),

  dashboardBody(

    tabItems(
      tabItem(tabName='tab1',
              actionButton("import","Import"),
              br(),
              tags$div(tags$h3(tags$b(" Get Selected Row Values",align="middle",style="color: rgb(57,156,8)"))),
              br(),
              DT::dataTableOutput('ProductDataTable')
      ),
      tabItem(tabName='tab2',
              actionButton("display","Display"),
              uiOutput('info')
      )
    )
  )
)

server <- function(input, output) {

  Product <- reactive({
    if(input$import == 0)
  {
    return()
  }
    isolate({
      input$import
      data <- mtcars # Here read Your data: read.csv2("RulesData.csv", header=TRUE, sep=";")
      })
  })


    output$ProductDataTable <- DT::renderDataTable({

      DT::datatable(Product(),selection = "single",

                    extensions = c('Buttons', 'ColReorder', 'FixedHeader', 'Scroller'),
                    rownames=FALSE,
                    options=list(dom = 'Bfrtip',
                                 searching = T,
                                 pageLength = 25,
                                 searchHighlight = TRUE,
                                 colReorder = TRUE,
                                 fixedHeader = TRUE,
                                 filter = 'bottom',
                                 buttons = c('copy', 'csv','excel', 'print'),
                                 paging    = TRUE,
                                 deferRender = TRUE,
                                 scroller = TRUE,
                                 scrollX = TRUE,
                                 scrollY = 700

                    ))
    })


  observeEvent(input$display,{


    output$info <- renderPrint({
      row_count <- input$ProductDataTable_rows_selected
      data <- Product()[row_count, ] 
      cat('Row Selected: ')
      cat(data[,1]) #display the selected row 1st col value  


    })

  })
}

shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 R Shiny 应用程序中数据表中的选定行获取行值 的相关文章

随机推荐

  • 谁拥有 .NET 中的包装流(例如 TextWriter)?

    我最近遇到错误 ObjectDisposeException 无法访问关闭的流 ObjectDisposedException Cannot access a closed Stream System IO MemoryStream Wri
  • python selenium webdriver safari 驱动程序

    快速提问 我一直在构建一个 python selenium 框架来测试我们的网站 我已经成功实现了 Firefox Chrome 和 IE 浏览器测试 但一直在寻找Safari驱动程序 我知道在官方文档中它简要描述了它的不兼容性并且不支持
  • Psycopg2 中的“类型错误:参数 2 必须是连接、游标或无”

    我设置了一个 Heroku 管道 并且刚刚为其启用了评论应用程序 它使用与我的登台和生产应用程序相同的代码库 相同的设置文件和所有内容 当审核应用程序启动时 它可以连接到创建的数据库并运行迁移 当我尝试连接到浏览器中的应用程序时 我得到 T
  • 服务器客户端通信Python

    Server import socket import sys s socket socket socket AF INET socket SOCK STREAM host VAC01 VACLab com port int 2000 s
  • request-promise-native 的替代方案[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找在 Node js 中实现基本 HTTP 方法 例如 GET POST 的现代模块 我想最受
  • 片段中的 EditText 和软键盘问题

    我目前正在构建一个 Android 应用程序 使用户能够拍照并写入其详细信息 该应用程序使用 Sherlock 库 我实现了一个 SherlockFragment 来显示图像 以及一些 EditText 和 TextView 来使用户能够键
  • 使用正则表达式匹配数字 - 仅数字和逗号

    我无法弄清楚如何为示例值构建正则表达式 123 456 789 12 34 1234 8 你可以帮帮我吗 什么是数字 我有一个简单的问题your 简单 问题 一个数字 到底是什么意思 Is 0一个号码 你对这个怎么看 1 Is or 一个号
  • 如何通过 ID 从另一个网站获取元素 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想通过其 ID 从另一个站点获取 div 的内容 比方说 我有一个网站 我想从这个 URL 获取 id 为 mainbar 的 di
  • 如何用C语言生成GUID?

    我想生成插入 SQLite 数据库的 guid 即数据库本身不支持 但是 我想控制某些属性 用于生成不断增加的指导值的有序性 计算机独立性 数据库是公共的 可能 可能不希望 guid 允许某人将数据追溯到特定机器 足够 的随机性 guid
  • S3方法:扩展ggplot2`+.gg`函数

    我正在尝试延长ggplot2一个新的类 我们称之为foo对于这个例子 目标是写一个 foo将用来代替的方法 gg 但是我遇到了 方法不兼容 的问题 设置 目前我可以写ggplot add foo layer这将使plot进入我的foocla
  • 如何重新计算单元格的公式?

    我的代码设置了很多单元格值 最后 在生成 Excel 文件之前需要评估每个单元格中的公式 对于大多数床单来说 一切进展顺利 但是 有一个单元格抛出异常 该单元格正在计算其后面的一系列单元格以及其他工作表中的参考单元格的平均值 我猜当第一个单
  • R:如何使用正则表达式对列表元素进行分组和聚合?

    我想按组汇总 总结 以下产品列表 见下文 prods lt list 101 2000 data frame 1 2 3 102 2000 data frame 4 5 6 103 2000 data frame 7 8 9 104 200
  • 通过 request 在 Node.js 中获取下载进度

    我正在创建一个使用 Node 模块下载应用程序文件的更新程序request 我该如何使用chunk length估计剩余文件大小 这是我的代码的一部分 var file url http foo com bar zip var out fs
  • 使用 Java 将文件上传并 POST 到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 我的 php 页面是
  • C++ 中的字符串分配:为什么会这样? [复制]

    这个问题在这里已经有答案了 void changeString const char s std string str s str replace 0 5 Howdy s str c str int main const char s He
  • 如何在 Python 中创建带有复选框的树视图

    我一直在使用 Tkinter 和 Tix 编写一个小程序 我现在需要一个带有复选框 复选框 的树视图 以便我可以从树视图中选择项目 是否有捷径可寻 我一直在研究 ttk Treeview 看起来很容易获得树视图 但是有没有办法在视图中插入复
  • Axios 拦截器令牌标头存在于配置中,但不存在于请求标头中

    我创建了 axios 拦截器 它负责在每个请求发送到我的其余 API 之前添加令牌 import axios from axios import store from store store export default function
  • IHttpContextAccessor 会话 GetString

    我正在尝试使用 NET Core 运行时将 ASP NET MVC 站点迁移到 ASP NET Core 以前 我们可以从会话存储中获取对象 即使在不同的程序集中 也可以使用 var obj HttpContext Current Sess
  • 如何无限迭代列表,每次循环 +1 偏移量

    我想从 0 到末尾无限迭代列表 但在下一个循环中 我想从 1 开始到末尾加 0 下一个循环将从 2 开始到末尾加 0 1 直到最后一项将从 0 重新开始并到达末尾 这是我的代码 a 0 1 2 offset 0 rotate 0 while
  • 如何从 R Shiny 应用程序中数据表中的选定行获取行值

    我需要从 DT 数据表中获取所选行第一列的值 使用 数据表 rows selected 我能够获取选定的行数 现在我正在寻找从数据表中提取行值的方法 在下面的例子中 有两个观察事件基于操作按钮 第一个观察事件被导入并显示数据 第二个观察事件