gpt4 book ai didi

r - Shiny 回应进入

转载 作者:行者123 更新时间:2023-12-04 03:26:44 24 4
gpt4 key购买 nike

我有一个 textInput 小部件,现在每当我开始在小部件中输入时,shinyApp 都会尝试评估 textInput 小部件中未完成的内容并导致许多错误。我知道添加一个 Action 按钮“计算”可以轻松解决问题。但是,我的应用程序没有空间再放置一个按钮。所以,我想知道 textInput 小部件是否有办法“监听”键盘事件,例如当用户点击“Enter”时?提前致谢!

最佳答案

很好的问题。这是我使用的方式的一个例子;这个应用程序显示了一个 ggplot 并且用户在文本框中给出了 ggplot 的标题 - 但只有在按下“返回”时标题才会发生变化:

js <- '
$(document).on("keyup", function(e) {
if(e.keyCode == 13){
Shiny.onInputChange("keyPressed", Math.random());
}
});
'

shinyApp(
ui = bootstrapPage(

tags$script(js),

textInput("title", label = "Title"),

plotOutput("ggplot")
),

server = function(input, output, session){

Title <- reactiveVal()

observeEvent(input[["keyPressed"]], {
Title(input[["title"]])
})

output[["ggplot"]] <- renderPlot({
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point() +
ggtitle(Title())
})

}
)

说明:

这个Javascript代码:
$(document).on("keyup", function(e) {
if(e.keyCode == 13){
Shiny.onInputChange("keyPressed", Math.random());
}
});

创建一个新的 Shiny 输入,即 input$keyPressed当在任何地方按下“返回”键时,它会收到一个随机数。

然后我定义一个 react 值,它取值 input$title用户在文本框中给出,仅当 input$keyPressed变化:
Title <- reactiveVal()

observeEvent(input[["keyPressed"]], {
Title(input[["title"]])
})

最后我将这个 react 值传递给 ggtitle :
output[["ggplot"]] <- renderPlot({
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point() +
ggtitle(Title())
})

关于r - Shiny 回应进入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415301/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com