在闪亮的程序中缓慢grep()

时间:2015-03-06 00:32:13

标签: r shiny

我已经构建了一个闪亮的应用程序,它位于以下URL。

https://hdoran.shinyapps.io/openAnalysis/

在名为&#34的选项卡上;选择CrossFit Open Data"我有一个textInput()函数调用一个使用grep()的函数,该函数用于在数据框中查找名称。

第一次加载程序并输入名称时,搜索似乎很快就会发生,并返回名称。但是,当我删除名称并键入第二个名称时,搜索似乎非常慢。

我能做些什么来优化它,以便始终快速执行?

我仍然很擅长闪亮,并且不确定是否以某种方式使这成为一个反应性表达会有所帮助。如果是这样,我不太确定如何。

提前致谢。

ui.R文件中相关的代码部分

textInput("name", label = 'Enter an athlete name and find your scores', 
value = "Enter Name Here")

和server.R文件中的相关代码部分是

output$myScores <- renderPrint({
df <- filedata()
df[grep(input$name, df$Competitor),]
})

此部分也在ui.R文件中(虽然我不确定它与问题有关)

verbatimTextOutput("myScores"),

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的目标,您希望用户能够根据搜索competitor调用的数据框的filedata()列来选择输入变量吗?如果是这样,selectizeInput()就是您正在寻找的,使用服务器端选择as outlined here

改编自您提供的代码:

ui.r

selectizeInput("name", choices = NULL, multiple = FALSE)

server.r

updateSelectizeInput(session, "name", choices = filedata()$competitor, server = TRUE)

output$myScores <- renderPrint({
    df <- filedata()
    subset(df, competitor==input$name)
})