gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:35:14 25 4
gpt4 key购买 nike

我需要从 DT 数据表中获取所选行第一列的值。使用 DataTable_rows_selected ,我可以获得选定的行数,现在我正在寻找从数据表中提取行值的方法。在下面的示例中,有两个基于操作按钮的observeEvent,第一个观察事件是导入并显示数据,第二个需要显示所选行的第一个列值,以便我可以使用相同的实现其他特性。请注意,在实际应用中,导入的数据是一个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数据集作为示例,问题是您的数据位于观察者内部(一个带有input$import )并且由于您需要将其用于其他分析,例如显示第一列的行值(我不太明白您的意思,因为您的代码正在讲述不同的事情),因此数据必须移至observer 并放入 reactive 中。

[更新]

我使用了 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)

关于javascript - 如何从 R Shiny 应用程序中数据表中的选定行获取行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com