我已经查看了这个问题,但似乎仍然无法使我的代码工作
如何在闪亮/r
中"保存"反应性数据框我正在尝试在CSV文件中读取闪亮的应用程序,然后将CSV文件中的每个单元格成为一个可在应用程序中使用的变量。这可能吗?我一直在阅读有关使用分离株()的信息,但它并没有为我锻炼。每次我从文件中的信息中进行变量时,都有一个错误,说由于文件是反应性而无法制作的。我一直在文件中读取的代码如下。关于如何从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
然后,您可以将数据框架存储在此处,例如,通过在您的Filedata反应性中使用此框架:
storedData$df <- read.csv(inFile$datapath)
现在您可以从其他反应性环境中访问storedData$df
的数据集并将数据读取或写入数据。