使用rhandsontable和reactiveValues时使光泽更快的方法
我的代码有一个rhandstontable,用户可以编辑它。这将导致基于自定义函数更新最右边的列。代码还将表中的值绘制在两个GGPLOT上,当表值更改时,这些GGPLOT也会更新。所有这些都有效,除了有一个有趣的双重刷新,使闪亮变慢;我的表不大,大约50行乘23列,其中只有4列用于绘图,但大约12列用于自定义函数 有没有一种方法可以使用observe()、reactiveValues或其他相关函数使光泽更快? 我是反应式表达式的新手,我一直在读到,通过正确缓存数据,可以使应用程序更快使用rhandsontable和reactiveValues时使光泽更快的方法,r,shiny,reactive-programming,rhandsontable,R,Shiny,Reactive Programming,Rhandsontable,我的代码有一个rhandstontable,用户可以编辑它。这将导致基于自定义函数更新最右边的列。代码还将表中的值绘制在两个GGPLOT上,当表值更改时,这些GGPLOT也会更新。所有这些都有效,除了有一个有趣的双重刷新,使闪亮变慢;我的表不大,大约50行乘23列,其中只有4列用于绘图,但大约12列用于自定义函数 有没有一种方法可以使用observe()、reactiveValues或其他相关函数使光泽更快? 我是反应式表达式的新手,我一直在读到,通过正确缓存数据,可以使应用程序更快 libra
library(shiny)
library(rhandsontable)
library(tidyverse)
library(ggthemes)
library(ggrepel)
## Create the dataset
DF <- readRDS("data/DF2.Rds")
numberofrows <- nrow(DF)
# weighting variables
w1 = (c(4,3,1))
w2 = (c(1,1,1,1))
w3 = (c(2,2,1,2,1,1,2))
# Function to calculate scores
ScoresTbl <- function(data, w1, w2, w3){
Description <- data[,1:9]
Potential <- crossprod(t(data[,10:12]), w1)/sum(w1)
Setting <- crossprod(t(data[,13:16]), w2)/sum(w2)
Risk <- crossprod(t(data[,17:23]),w3)/sum(w3)
data.frame(data[1:23],Potential,Setting,Risk) %>%
mutate(
SOP = rowMeans(data.frame(Potential,Setting,Risk)))
}
ui = fluidPage(
fluidRow(column(12,
rHandsontableOutput('hotable1', width = "100%", height = "25%")#,
# actionButton("go", "Plot Update")
)),
fluidRow(column(6, plotOutput("plot1")),
column(6, plotOutput("plot2")))
)
server <- shinyServer(function(input, output) {
indat <- reactiveValues(data=ScoresTbl(DF,w1, w2, w3))
observe({
if(!is.null(input$hotable1))
indat$data <- hot_to_r(input$hotable1)
})
output$hotable1 <- renderRHandsontable({
rhandsontable(ScoresTbl(indat$data,w1, w2, w3))
})
output$plot1 <- renderPlot({
ggplot(data = indat$data,
aes(x=Potential,
y=Setting, label = Project)) +
geom_point(alpha = 0.5) +
scale_size(range = c(2,15)) +
geom_text_repel(colour = "black",size = 2.5) +
theme_minimal()
})
output$plot2 <- renderPlot({
ggplot(data = indat$data,
aes(x=Potential,
y=Setting, label = Project)) +
geom_point(alpha = 0.5) +
scale_size(range = c(2,15)) +
geom_text_repel(colour = "black",size = 2.5) +
theme_minimal()
})
})
shinyApp(ui, server)
库(闪亮)
图书馆(rhandsontable)
图书馆(tidyverse)
图书馆(主题)
图书馆(ggrepel)
##创建数据集
DF