0
검색에 따라 많은 제품을 표시하는 반짝이는 앱이 있습니다. 큰 데이터 세트를 부분 집합으로 묶어 원하는 제품을 보여줍니다.다른 데이터 프레임의 서브 세트로 반짝 반짝 빛나는 Datatable의 팝업 표시
해당 제품에 대한 리뷰가있는 다른 데이터 프레임이 있습니다. 특정 행을 클릭하면 리뷰 정보가 다른 데이터 테이블에 나타납니다. 두 번째 데이터 테이블은 또한 카탈로그 번호를 기준으로 하위 집합을 할 필요가 (여기 A
열입니다.
감사 모든 도움을.
df1 <- data.frame(A= c("BX002","BX006", "BX008"),
B= c("Actin","Tubulin", "GAPDH"),
C = c("Mouse","Human", "Human"),
D = c("WB","WB", "IHC"))
df2 <- data.frame(A= c("BX002","BX006", "BX008"),
B= c("Actin","Tubulin", "GAPDH"),
C = c("5","5", "4"),
D = c("Good","Good", "Bad"),
E = c("Kidney", "Liver", "Heart"))
library(shinydashboard)
library(shiny)
app <- shinyApp(
ui = dashboardPage(
dashboardHeader(
title = "Search"),
dashboardSidebar(
sidebarMenu(
menuItem("Search Product", tabName = "product", icon = icon("search")))),
dashboardBody(
tabItems(
tabItem("product",
fluidPage(
sidebarLayout(
sidebarPanel(textInput("name", "Protein name", value = ""),
submitButton("Search")),
mainPanel(
tabsetPanel(
tabPanel("Products", dataTableOutput("table1")))))))))),
server = shinyServer(function(input, output, session) {
output$table1 <- DT::renderDataTable({
validate(need(input$name != "", "Please select a Protein Name"))
search <- input$name
df <- subset(df1, grepl(search, df1$B, ignore.case = TRUE)==TRUE)
datatable(df, escape = FALSE, selection = "single")
})
observeEvent(input$table1_rows_selected,
{
df <- subset(df2, df2$A == input$table1_rows_selected$A)
showModal(modalDialog(
title = "Reviews",
df
))
})
})
)
내가 몇 가지 방법을 시도했지만 그것이 작동되도록 기운 다.
이 내 마지막 atempt, 아니 상자 팝업, 오류 메시지에 불과하다.
최고의
가 대단히 감사합니다. 그러나 그것은 어떤 기능으로는 작동하지 않습니다. 정확한 일치 만 제공하기 때문에 제품과 정확히 일치하는 검색어는 검색되지 않습니다. 많은 사람들이 그리스 문자 등을 사용합니다. 불행히도 그것은 나를 위해 작동하지 않았다. 코드를 내 스펙 코드로 조정했는데 결과가'경고 : 데이터 테이블의 오류 : '데이터'가 2 차원 (예 : 데이터 프레임 또는 행렬)이어야합니다! ' 나는 무엇이 잘못되었는지 알지 못하지만 모든 컬럼을 얻지 못하도록 리뷰 데이터 프레임을 서브 세트해야합니다. –
정확합니다. 그러나 좀 더 확장 된 검색 리턴 테이블을 만들기 위해 특정 코드 조각 (반응적인'tbl1')을 조정할 수 있어야합니다. 반응적인'review_tbl' 논리는 변경되어서는 안됩니다. – kostr
그것은 나에게 결과가없는 것 같습니다. HTML과 하이퍼 링크가 많이 있기 때문에 찾을 수 없을 것입니다. 나는 또 다른 해결책을 찾았다. 이제 가입 패널을 통합해야합니다. 고맙습니다. –