首页 > 解决方案 > 闪亮的操纵 input$df 与反应

问题描述

我是闪亮的新手,并试图修改此代码以允许从动态选择的 csv 中使用该函数。

## function to return random row number from data set
getTweet <- function(){
 tweetData[sample(nrow(tweetData), 1), ]
}

our_tweet <- isolate(appVals$tweet)
  output$tweet <- renderText({ our_tweet$tweet })
  output$screen_name <- renderText({ our_quote$screen_name })
  output$resultsTable <- renderDataTable({appVals$ratings})

上面的代码在 tweetData 是通过 read.csv() 读取的静态 csv 时有效,但是当我尝试使用下拉菜单选择 csv 时,我能够无错误运行的唯一方法是将其放入 renderDataTable() 函数中. 我如何在 input$file 中使用反应值并且仍然能够运行上述代码。

使用 renderDataTable() 的代码:

 output$test <- renderDataTable({
    req(input$file)
    csvName <- paste0('../path/to/file/', input$file)
    selectedData <- read.csv(csvName)
    selectedData
    })

我希望能够做这样的事情:

csvName <- paste0('../path/to/file/', input$file)
selectedData <- read.csv(csvName)

selectedData[sample(nrow(selectedData), 1), ]

标签: rshiny

解决方案


您可以创建reactive函数:

csvName <- reactive(paste0('../path/to/file/', input$file))
selectedData <- reactive(read.csv(csvName()))

然后,您可以在其他反应器中使用反应函数,例如renderDataTable

output$test <- renderDataTable({
  selectedData()[sample(nrow(selectedData()), 1), ]
    })

()调用反应函数的结果时不要忘记: csvName(), selectedData(), , ...


推荐阅读