Shiny运行plot函数报Error in [: subscript out of bounds错误如何解决
问题原因
- 应用初始化阶段,
renderUI中存在req(input$showPerfVectorBtn)限制,vector_input输入控件未渲染,input$vector_input的值为NULL - 此时
renderPlot直接调用vector.final(periods(), vector_input()),将NULL传入matrix.validate函数,函数内尝试对空值执行下标操作,直接触发「subscript out of bounds」报错 - 点击Show vector按钮后
vector_input完成渲染获得有效值,绘图逻辑即可正常运行
修复方案
仅需修改renderPlot部分的逻辑,当vector_input未初始化时使用默认参数生成初始图,控件渲染完成后使用用户输入的参数即可,该修改不会影响原有Show/Hide按钮的功能,向量输入网格初始仍保持隐藏:
output$graph1 <- renderPlot({ # vector_input未初始化时使用默认参数绘图 if(is.null(input$vector_input)){ default_mat <- matrix(c(periods(), base_input()[1,1]), 1, 2, dimnames=list(NULL, c("Y","Z"))) plot(vector.final(periods(), default_mat)) } else { plot(vector.final(periods(), vector_input())) } })
内容的提问来源于stack exchange,提问作者Curious Jorge - user9788072
相关产品推荐
相关产品推荐

