我想在Shiny應用程序中顯示和編輯rhandsontable
。由於我的數據框相當大,我希望用戶能夠過濾特定的行而不是顯示整個1000行(請參見下面的示例)。我可以基於input$row
爲子集hot
創建一個反應值,但只有DF[input$row,]
被分配給input$hot
,因此,下一次我得到input$hot
的值時,它將返回一個只有一行的數據幀。在R中過濾rhandsontable中的行Shiny
library(shiny)
library(rhandsontable)
ui <- shinyUI(fluidPage(
numericInput("rows","row to filter",value = 1),
rHandsontableOutput("hot")
))
server <- shinyServer(function(input, output, session) {
# render handsontable output
output$hot <- renderRHandsontable({
if (!is.null(input$hot)) {
DF <- hot_to_r(input$hot)
} else {
set.seed(42)
DF <- data.frame(a=1:1000, b= rnorm(1000))
}
rhandsontable(DF)
})
})
runApp(list(ui=ui, server=server))
是否有一個過濾paramenter,我可以適用於rhandsontable()
,讓我來呈現我的數據幀的過濾版本,而無需實際子集劃分它,以使關聯input$hot
將不受影響(除中,當然,對於用戶所做的任何編輯)?
我希望用戶在textInput框row
中寫入要過濾的行,然後相應地過濾表。當務之急是nrow(hot_to_r(input$hot)) == 1000
仍然是TRUE:
什麼你的意思是「沒有子集的過濾版本」?你想渲染什麼? –
@StéphaneLaurent,增加了預期的渲染。我遇到的問題是,如果我選擇通過類似'DF [rows,]'的子集(當然是反應性的方式),那麼子集DF將被保存回'input $ hot',行。 –