我在R中用Shiny包遇到了困难
我试图理解为什么server.R中的"#Option 1"不起作用,但评论"#Option 2"确实有效.在"#Option 1"处于活动状态时,尝试输入随机字符串并按下按钮.第一次用"abc"替换文本框中的值,但下次所有值都没有.
在我的理解中,val()已经依赖于输入$ change,所以它必须在每次按下按钮时重新执行,而且"#Option 2"被包装到isolate()中,因此它不会添加任何反应性.
实际上,当使用"#Option 1"时,该值实际上会部分更改为"abc".打开Google Chrome的inspect元素后,您可以看到"#Option 2"更改每次按下按钮时的值,"#Option 1"也会将值更改为"abc",但屏幕仅在按钮时更新是第一次按下.
这是代码:
server.R
require(shiny)
shinyServer(function(input, output) {
val <- reactive({
if(input$change>0) {
# Option 1
'abc'
# # Option 2
# isolate({
# paste('abc',input$txt,"")
# })
} else {
''
}
})
output$textbox <- renderUI({
textInput("txt","Text",val())
})
})
Run Code Online (Sandbox Code Playgroud)
ui.R
require(shiny)
require(shinyIncubator)
shinyUI(pageWithSidebar(
headerPanel('Test'),
sidebarPanel(
uiOutput("textbox"),
actionButton("change", "Change")
),
mainPanel(
)
))
Run Code Online (Sandbox Code Playgroud)
在这里查看我的回复:
https://groups.google.com/d/msg/shiny-discuss/PLHauRlFw3k/AnoD7NusvDIJ
要点是服务器不断向输出发送完全相同的值textbox,因此客户端足够“聪明”来忽略它。
| 归档时间: |
|
| 查看次数: |
3442 次 |
| 最近记录: |