我正在编写一个shinyapp,我想在其中放置一个操作按钮来复制一些代码(我正在使用shinyace)。当我在新会话中第一次运行我的应用程序时,它运行良好。但是当我关闭它并再次运行时,出现错误:
Error in : Clipboard on X11 requires that the DISPLAY envvar be configured
Run Code Online (Sandbox Code Playgroud)
我安装了xclip,xsel但问题仍然存在。当我使用 Shinyapps.io 部署应用程序时,每次想要使用复制到剪贴板功能时都会断开连接。
这是我的sessionInfo()和capabilities():
R version 3.6.1 (2019-07-05)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 18.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C LC_TIME=fr_FR.UTF-8
[4] LC_COLLATE=fr_FR.UTF-8 LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8
[7] LC_PAPER=fr_FR.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rsconnect_0.8.13 clipr_0.6.0 shinyAce_0.4.0 shiny_1.3.2
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 packrat_0.5.0 digest_0.6.20 later_0.8.0 bitops_1.0-6
[6] mime_0.7 R6_2.4.0 jsonlite_1.6 xtable_1.8-4 magrittr_1.5
[11] rlang_0.4.0 rstudioapi_0.10 promises_1.0.1 tools_3.6.1 RCurl_1.95-4.12
[16] httpuv_1.5.1 compiler_3.6.1 askpass_1.1 htmltools_0.3.6 openssl_1.4
Run Code Online (Sandbox Code Playgroud)
jpeg png tiff tcltk X11 aqua http/ftp sockets
TRUE TRUE TRUE TRUE TRUE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo ICU
TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
long.double libcurl
TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
我建议在自定义函数中使用 xclip,因为我不知道如何将DISPLAYvar传递给clipr::write_clip():
clipboard<-function(x, sep="\t", row.names=FALSE, col.names=F){
con <- pipe("xclip -selection clipboard -i -display :1", open="w") # note the 1 here
#writeChar(x, con) # for strings
write.table(x, con, sep=sep, row.names=row.names, col.names=col.names) # for table
close(con)
}
Run Code Online (Sandbox Code Playgroud)
我的经验是:我的rstudio服务器必须使用linux终端使用的显示器。
当我输入linux终端时
echo $DISPLAY
Run Code Online (Sandbox Code Playgroud)
给了我:1,这有效:
echo 1235 | xclip -sel clip
Run Code Online (Sandbox Code Playgroud)
但是在 Rstudio-server 内部,它的系统终端$DISPLAY给了我:0并且 xclip 线路失败。DISPLAY=:1仅在更改为 RStudio-server 系统终端或使用-display上述函数中的标志后,才可在 RStudio-server 中使用
事实上,当你第一次使用它时,它可以工作,这让我建议使用一个计数器来增加每次显示的数量,看看会发生什么。
| 归档时间: |
|
| 查看次数: |
2728 次 |
| 最近记录: |