我在我的闪亮应用上使用ggplot2::autoplot
函数和lm
对象
这可以归功于包ggfortify
。
在我的闪亮应用中,我也使用shinyjs
在下面的可再现示例中,只要我取消注释library(shinyjs)
& useShinyjs()
我收到错误:
Error in unclass(x) : cannot unclass an environment
。
有关可能的解决方法的任何想法吗?
library(shiny)
library(ggplot2)
library(ggfortify)
#library(shinyjs)
ui <- fluidPage(
#useShinyjs(),
div(
actionButton("run", "Run")
,uiOutput("ui_autoplot")
)
)
server <- function(input, output, session) {
data <- iris
rv_autoplot <- eventReactive(input$run, {
a <- lm(data = data, Sepal.Length ~ Petal.Length)
p <- autoplot(a, which = 1:6, label.size = 2, data = data)
return(p)
})
output$autoplot <- renderPlot({
req(rv_autoplot())
rv_autoplot()
})
output$ui_autoplot <- renderUI({
plotOutput("autoplot")
})
}
shinyApp(ui = ui, server = server)
我的sessionInfo()
:
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.3 LTS
Matrix products: default
BLAS: /usr/lib/openblas-base/libblas.so.3
LAPACK: /usr/lib/libopenblasp-r0.2.18.so
locale:
[1] LC_CTYPE=fr_FR.UTF-8 LC_NUMERIC=C LC_TIME=fr_FR.UTF-8 LC_COLLATE=fr_FR.UTF-8
[5] LC_MONETARY=fr_FR.UTF-8 LC_MESSAGES=fr_FR.UTF-8 LC_PAPER=fr_FR.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C 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] shinyjs_0.9.1 bindrcpp_0.2 ggfortify_0.4.1 ggplot2_2.2.1 shiny_1.0.5
loaded via a namespace (and not attached):
[1] Rcpp_0.12.13 magrittr_1.5 bindr_0.1 munsell_0.4.3 colorspace_1.3-2 xtable_1.8-2 R6_2.2.2
[8] rlang_0.1.2 plyr_1.8.4 dplyr_0.7.4 tools_3.4.1 grid_3.4.1 gtable_0.2.0 miniUI_0.1.1
[15] htmltools_0.3.6 yaml_2.1.14 lazyeval_0.2.0 digest_0.6.12 assertthat_0.2.0 tibble_1.3.4 gridExtra_2.3
[22] tidyr_0.6.3 glue_1.1.1 mime_0.5 labeling_0.3 compiler_3.4.1 scales_0.5.0 jsonlite_1.5
[29] httpuv_1.3.5 pkgconfig_2.0.1 Cairo_1.5-9
答案 0 :(得分:3)
您可以使用命名空间调用shinyjs
参数而不是加载库,shinyjs::useShinyjs()
似乎对我有效。
答案 1 :(得分:3)
这是加载shinyjs
以下对象从'package:methods'中隐藏:
removeClass,show
即函数show
。
您可以通过执行 SBista 在答案中执行的操作或重新隐藏全局环境中的功能来解决此问题,方法是添加此
show <- methods::show
在加载库之后。