我会保持这么简单。我正在构建一个闪亮的应用程序,从文件中加载数据,然后创建数据集。然后可以处理该数据集,从而产生另一个数据集。
我希望我的应用程序要做的是存储第一个数据集,每次创建新数据集时都要存储它。根据已保存数据集的列表,然后将创建radiobuttons UI,以便用户能够选择要使用的数据集。
问题是,当我运行应用程序并加载文件(创建第一个数据集)时,UI应该出现的位置显示错误:'Error: subscript out of bounds'
并且如果我尝试将函数应用于当前数据集(dataset.current()
)它说数据集是NULL,这当然意味着我的代码没有按照它应该做的那样。
应用程序中的其他所有内容都在工作(例如,从文件创建数据集)。
任何帮助将不胜感激! :)
以下是server.R脚本中的一些代码(仅限重要部分):
(...)
#list to store the datasets
datasets.list = list()
#adds first dataset created to the list
observe({
if(length(datasets.list) < 1 & !is.null(dataset())){
datasets.list[['dataset()']] = dataset()
}
})
#renders the UI according to the stored datasets
output$datasets1 <- renderUI({
radioButtons('datasets', 'Selected dataset:', choices = names(datasets.list[]))
})
#the current dataset the user is working with according to the selection
dataset.current <- reactive ({
if (length(datasets.list) > 0 & !is.null(dataset())){
return(datasets.list[[input$datasets]])
}
})
(...)
#(e.g.) Applying background correction to the current dataset, creating another one
dataset.bg <- reactive({
input$preprocess
isolate({
if (!is.null(dataset()) & input$pMethods == 'bgCor') {
return (data_correction(dataset.current(),"background"))
}
})
})
#Add created dataset to list
observe({
if(!is.null(dataset.bg())){
datasets.list[['dataset.bg()']] = dataset.bg()
}
})