【问题标题】:Using reactive input within reactiveValue() function在 reactiveValue() 函数中使用响应式输入
【发布时间】:2021-04-12 22:32:23
【问题描述】:

我是闪亮的新手,并试图找出一些反应性的东西。

目前这适用于静态 csv。

## function to return random row from twitter csv
 tweetData <- read.csv('twitterData1.csv')


## stores reactive values 
appVals <- reactiveValues(
    tweet =  tweetData[sample(nrow(tweetData), 1), ],
    ratings = data.frame(tweet = character(), screen_name = character(), rating = character())
    )

我需要相同的反应值块来运行,但使用 input$file 选择的 csv。

appVals <- reactiveValues(
    csvName <- paste0('../path/', input$file),
    tweetData <- read.csv(csvName),
    tweet =  tweetData[sample(nrow(tweetData), 1), ],
    ratings = data.frame(tweet = character(), screen_name = character(), rating = character())
    )

我得到错误:

Warning: Error in : Can't access reactive value 'file' outside of reactive consumer.

我试过移动东西,但总是卡住,感谢帮助!

【问题讨论】:

  • reactiveValues() 中使用= 而不是&lt;-。这些是名称参数,而不是变量。

标签: r shiny


【解决方案1】:

错误告诉您应该更新反应式表达式中的值。

首先初始化反应值:

tweetData <- read.csv('twitterData1.csv')

appVals <- reactiveValues()
appVals$tweet <-  tweetData[sample(nrow(tweetData), 1), ]
appVals$ratings <- data.frame(tweet = character(), screen_name = character())

然后用响应式更新它们:

observeEvent(input$file,{
    csvName <- paste0('../path/', input$file)
    if (file.exists(csvName) {
      tweetData <- read.csv(csvName)
      appVals$tweet =  tweetData[sample(nrow(tweetData), 1), ]
      appVals$ratings = data.frame(tweet = character(), screen_name = character(), rating = character())
     }
    })

【讨论】:

  • 谢谢,这很有帮助!当我进行此编辑时,我现在收到“警告:..stacktraceon..中的错误:找不到对象'appVals'”的错误。我需要做些什么来在您推荐的代码中初始化 appVals 吗?
  • 查看我对响应值的初始创建的编辑
猜你喜欢
  • 1970-01-01
  • 2020-01-02
  • 2021-04-15
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-17
相关资源
最近更新 更多