맞춤 검색 창을 기반으로 데이터 테이블을 변경하는 반짝이는 모듈을 만들려고합니다.
검색 창 검색 결과를 R-Studio 콘솔에 인쇄하는 앱을 만들었지 만 모듈에서 결과를 반환하고 반응 형 데이터 저장소를 업데이트하려면 어떻게해야합니까?
여기에 예제 앱이 있습니다. 리 액티브를 업데이트하기 위해 인쇄 된 내용을 반환하고 싶습니다.
myModuleUI <- function(id) {
ns <- NS(id)
tagList(
fluidRow(
column(width=2,
textInput(ns("searchField"), "Search"),
dataTableOutput("table")
)
)
)
}
myModule <- function(input, output, session, df) {
observeEvent(input$searchField, {
if(!is.null(input$searchField)){
print(
df %>% filter_at(vars(names(df)), any_vars(str_detect(as.character(.), input$searchField)))
)
}
})
}
# Use the module in an application
ui <- fluidPage(
myModuleUI("myModule1")
)
server <- function(input, output, session) {
out <- reactiveValues(
df = data.frame(
company = c('a', 'b', 'c', 'd'),
bond = c(0.2, 1, 0.3, 0),
equity = c(0.7, 0, 0.5, 1),
cash = c(0.1, 0, 0.2, 0),
stringsAsFactors = FALSE
)
)
callModule(myModule, "myModule1", df = out$df)
output$table <- DT::renderDataTable({
m <- datatable(
out$df,
options = list(dom = 'tip')
)
})
}
shinyApp(ui, server)
당신은 사용해야 ns()
당신이 모듈 내에서 사용할 수 있도록, 너무 datatableOutput outputId에 :
myModuleUI <- function(id) {
ns <- NS(id)
tagList(
fluidRow(
column(width=2,
textInput(ns("searchField"), "Search"),
dataTableOutput(ns("table"))
)
)
)
}
myModule <- function(input, output, session, df) {
output$table <- DT::renderDataTable({
datatable(
if(!is.null(input$searchField)){
df %>% filter_at(vars(names(df)), any_vars(str_detect(as.character(.), input$searchField)))
} else df,
options = list(dom = 'tip')
)
})
}
# Use the module in an application
ui <- fluidPage(
myModuleUI("myModule1")
)
server <- function(input, output, session) {
out <- reactiveValues(
df = data.frame(
company = c('a', 'b', 'c', 'd'),
bond = c(0.2, 1, 0.3, 0),
equity = c(0.7, 0, 0.5, 1),
cash = c(0.1, 0, 0.2, 0),
stringsAsFactors = FALSE
)
)
callModule(myModule, "myModule1", df = out$df)
}
shinyApp(ui, server)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다