如何使用 isolate 使 R Shiny 中的数据框不反应?
How to use isolate to make a dataframe non-reactive in R Shiny?
我看过这个问题,但似乎仍然无法让我的代码正常工作
How to 'save' reactive dataframe as non-reactive in shiny/R
我正在尝试将 csv 文件读入 Shiny 应用程序,然后使 csv 文件中的每个单元格成为一个变量,以便稍后在应用程序中使用。这可能吗?我一直在阅读有关使用 isolate() 的信息,但它对我来说并不奏效。每次我根据文件中的信息创建变量时,都会出现一个错误,提示由于文件处于反应状态而无法创建。我一直用来读取文件的代码如下。任何有关如何从 csv 内容创建变量的帮助都将非常有帮助。
filedata <- reactive({
inFile <- input$datafile
if (is.null(inFile))
return(NULL)
data <- read.csv(inFile$datapath)
})
isolate(filedata())
为了让它工作,我认为文件必须是非反应性的。
谢谢!
isolate
这里帮不了你。它的目的是使(部分)反应不对输入的变化做出反应。
根据您的描述,您似乎希望拥有可以通过某种方式变异的数据?如果您只需要访问单元格而不更改它们,那么您实际上不需要做任何事情,只要您处于反应性环境中(即渲染、观察、反应性,可能更多)只需做
filedata()[row, column]
访问您的手机。例如,如果你想对第一行第三个单元格的值进行反应,你可以这样做
thirdCellInFirstRow <- reactive(filedata()[row, column])
然后使用 thirdCellInFirstRow()
在另一个反应中访问该值。
如果您需要能够更改数据集中的数据,例如单元格的内容,那么您需要使用不同的结构。一种可能性是 reactiveValues
或 reactiveVal
。在您的服务器函数中创建一个空 reactiveValues
:
storedData <- reactiveValues
然后你可以在那里存储你的数据框,例如在你的文件数据反应中使用它:
storedData$df <- read.csv(inFile$datapath)
现在您可以从其他反应环境访问该数据集,如 storedData$df
并向其中读取或写入数据。
我看过这个问题,但似乎仍然无法让我的代码正常工作
How to 'save' reactive dataframe as non-reactive in shiny/R
我正在尝试将 csv 文件读入 Shiny 应用程序,然后使 csv 文件中的每个单元格成为一个变量,以便稍后在应用程序中使用。这可能吗?我一直在阅读有关使用 isolate() 的信息,但它对我来说并不奏效。每次我根据文件中的信息创建变量时,都会出现一个错误,提示由于文件处于反应状态而无法创建。我一直用来读取文件的代码如下。任何有关如何从 csv 内容创建变量的帮助都将非常有帮助。
filedata <- reactive({
inFile <- input$datafile
if (is.null(inFile))
return(NULL)
data <- read.csv(inFile$datapath)
})
isolate(filedata())
为了让它工作,我认为文件必须是非反应性的。
谢谢!
isolate
这里帮不了你。它的目的是使(部分)反应不对输入的变化做出反应。
根据您的描述,您似乎希望拥有可以通过某种方式变异的数据?如果您只需要访问单元格而不更改它们,那么您实际上不需要做任何事情,只要您处于反应性环境中(即渲染、观察、反应性,可能更多)只需做
filedata()[row, column]
访问您的手机。例如,如果你想对第一行第三个单元格的值进行反应,你可以这样做
thirdCellInFirstRow <- reactive(filedata()[row, column])
然后使用 thirdCellInFirstRow()
在另一个反应中访问该值。
如果您需要能够更改数据集中的数据,例如单元格的内容,那么您需要使用不同的结构。一种可能性是 reactiveValues
或 reactiveVal
。在您的服务器函数中创建一个空 reactiveValues
:
storedData <- reactiveValues
然后你可以在那里存储你的数据框,例如在你的文件数据反应中使用它:
storedData$df <- read.csv(inFile$datapath)
现在您可以从其他反应环境访问该数据集,如 storedData$df
并向其中读取或写入数据。