【发布时间】:2020-09-09 10:22:02
【问题描述】:
我有一个数据框,我需要能够在使用 Shiny 时插入列。函数 filedata 读取一个数据集,称为 filedata()。
filedata <- reactive({
req(input$file_selector)
read.csv(paste0(parseDirPath(c(home = 'C:\\Users\\Ruben'), file_dir()),'\\',input$file_selector),skip=1)
})
output$filetable <- renderDataTable({
filedata()
})
当用户选中一个询问他/她是否要插入新列的框时,此代码会运行。但是,我收到“分配的无效(NULL)左侧”错误。我已经尝试了很多方法,但我无法弄清楚哪些地方做得不对。这段代码有什么问题?
input$qc_final_cols 是复选框 ID。
df <- reactive({
if (input$qc_final_cols){
var_names = c('TA','PP','US','UD','UE','UG','UH','XR','RW','PA','TB4','TV2','TV4',
'TV8','TV20','TV40','MV2','MV4','MV8','MV20','MV40','VB','TA40','TA120','SD')
output$column_names <- renderText(var_names)
for (v in 1:length(var_names)){
ind <- which(colnames(filedata()) == var_names[v])
filedata() <- filedata() %>% add_column(z = NA,.after = ind)
colnames(filedata())[ind+1] <- paste0(var_names[v],'_QC')
filedata() <- filedata() %>% add_column(y = NA,.after = ind+1)
colnames(filedata())[ind+2] <- paste0(var_names[v],'_Final')
}
}
})
output$filetable <- renderDataTable({
df()})
【问题讨论】:
-
你不能像
filedata() <- filedata()…这样进行分配,请查看反应式编程。