假设我有一个由用户上传的数据对象:
data <- reactive({
inFile <- input$file
if (is.null(inFile)) return(NULL)
data <- read.csv(inFile$datapath)
return(data)
})
假设我要删除数据集中的列。我想将它设置为全局赋值,以便我可以多次运行UI并将每个效果保存在对象中。
dataset <- reactive({
file1 <- data()
file1[,input$deletecols] <<- NULL
return(file1)
}}
})
然而,当我运行它时,我收到错误:
无效(NULL)分配左侧
导致此错误的原因是什么?如果全局分配不起作用,我怎样才能达到这个效果?
非常感谢。
答案 0 :(得分:2)
您应该使用reactiveValues()
来满足此类需求,因为它允许您在应用的不同阶段创建和修改数据。
这是一个例子(未经测试):
values <- reactiveValues()
observe({
inFile <- input$file
if (!(is.null(inFile))){
values$data <- read.csv(inFile$datapath)
}
})
observe({
values$data[,input$deletecols] <- NULL
})