Shiny模块获取pickerInput值报错:非S4对象无法读取slot
问题解决方法
错误原因
input是Shiny中的reactiveValues对象,属于R的列表型对象,而非S4类对象,不能使用S4类的槽访问符号@来获取元素,这就是报错的根本原因。
修正方案
将访问方式改为列表的标准访问语法:
- 使用
$符号:input$zebra - 或者使用
[[:input[["zebra"]]
另外要注意,在Shiny server端获取反应式输入值时,必须在反应式上下文(比如observe()、reactive()、observeEvent()等)中调用,否则无法正确获取动态更新的值。修正后的示例代码:
observe({ input$zebra %>% print() })
或者:
my_reactive_val <- reactive({ input$zebra }) observe({ print(my_reactive_val()) })
代码对比
- 错误写法:
input@zebra %>% print()
- 正确写法:
input$zebra %>% print()
内容的提问来源于stack exchange,提问作者Jochem
相关产品推荐
相关产品推荐

