gpt4 book ai didi

Linux 上的 RStudio 服务器 : how to create a shiny app that immediately returns user input text if button OK pressed, 或 FALSE 如果按下按钮取消

转载 作者:行者123 更新时间:2023-12-03 09:51:29 24 4
gpt4 key购买 nike

我希望我的函数使用 Shiny 的应用程序实现带有可编辑文本框的对话框。

即调用该函数应该打开一个 Shiny 的应用程序,显示一些文本供用户编辑,然后按“确定”按钮关闭应用程序并返回编辑后的文本,或按“取消”按钮关闭应用程序并返回一个空字符向量。

我的代码在 Windows(Rstudio 桌面)上运行良好。但是在 Linux (Rstudio Server Pro) 上显示 Shiny 的页面但界面似乎是灰色的,可以编辑文本但按钮没有响应。为什么?

--编辑--

无响应问题发生在 Internet Explorer 和 Microsoft Edge 上,而不是 Chrome。尽管 Chrome 中的页面也是灰色的,并且打开 Chrome 的“检查”工具显示 2 个错误:

(1) shinyapp.js:83 WebSocket connection to 'wss://XXXXXXXXXXXXXXX/websocket/' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET
(2) Uncaught TypeError: Cannot read property 'readyState' of null
at ShinyApp.$sendMsg (shiny.min.js:3)
at ShinyApp.sendInput (shiny.min.js:3)
at InputBatchSender.$sendNow (shiny.min.js:3)

[其中 XXXXXXXXXXXXXXX 代表我的 Rstudio 服务器的 URL]

library(shiny)


getMyText <- function(default = "This is my input\n- Anonymous") {
require(stringr)
ui <- fluidPage(
textAreaInput("myTextBox", "Edit text", paste(default, collapse="\n"),
width = "600px", height = "400px"),
actionButton("okBtn", "Ok"),
actionButton("cancelBtn", "Cancel")
)
server <- function(input, output) {
observe({
if(input$cancelBtn > 0){
stopApp(character(0))
}
});
observe({
if(input$okBtn > 0){
stopApp(unlist(str_split(input$myTextBox, "\n")))
}
});
}
return(runApp(list(ui = ui, server = server)))
}
args <- getMyText()

session 信息:


sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-redhat-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server 7.4 (Maipo)

Matrix products: default
BLAS/LAPACK: /usr/lib64/R/lib/libRblas.so

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
[6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] stringr_1.3.1 shiny_1.4.0.2

loaded via a namespace (and not attached):
[1] Rcpp_1.0.4 digest_0.6.18 later_1.0.0 mime_0.6 R6_2.4.1 xtable_1.8-3 magrittr_1.5 rlang_0.4.5
[9] stringi_1.1.7 promises_1.1.0 tools_3.5.0 httpuv_1.5.2 yaml_2.2.0 fastmap_1.0.1 compiler_3.5.0 htmltools_0.4.0
>

最佳答案

对我来说,灰色的屏幕听起来像是您的 observe block 在所有输入设置之前就已启动。这可以通过两种方式补救:

observe({
req(input$cancelBtn)
if (input$cancelBtn > 0) {
stopApp(character(0))
}
})
observeEvent(input$cancelBtn, {
if (input$cancelBtn > 0) {
stopApp(character(0))
}
}, ignoreNULL = TRUE) # which is the default, including it for clarity

仅供引用:win10、R-3.5.3、shiny-1.4.0

关于Linux 上的 RStudio 服务器 : how to create a shiny app that immediately returns user input text if button OK pressed, 或 FALSE 如果按下按钮取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61780448/

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