返回

r-无需在服务器上插入所有代码的方法

发布时间:2022-09-10 21:35:26 585

下面的代码使用WSM(加权和法)生成最终排名表的方法。为此,有必要选择标准权重。正如在代码中一样,我正在手动选择标准权重(weights <- c(0.5,0.5)).从这个意义上说,我做了两个numericInput用于选择权重。解决这个问题的一个方法是把所有的东西都放在一个reactiveserver,答案如下:仅当更新闪亮应用程序中的数字输入时生成表格

然而,我希望看到不剥离与上的WSM计算有关的代码的可能性server,正如我在给出的链接中所做的那样。在这种情况下,这部分代码:

weights <- c(0.5,0.5) 

scaled <- df1 |>
  mutate(Coverage = min(Coverage) / Coverage,
         Production = Production / max(Production))

scaled <- scaled |>
  rowwise() |>
  mutate(`Performance Score` = weighted.mean(c(Coverage, Production), w = weights))

scaled$Rank <- (nrow(scaled) + 1) - rank(scaled$`Performance Score`)

因此,还有其他解决方法吗?

library(shiny)
library(shinythemes)
library(dplyr)

df1<-structure(list(nclusters = c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 
12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 
28, 29, 30, 31, 32, 33, 34, 35), Coverage = c(0.0363201192049018, 
0.0315198954715543, 0.112661460735583, 0.112661460735583, 0.112661460735583, 
0.0813721071219816, 0.0862146652218061, 0.0697995564757394, 0.0599194966471805, 
0.0507632014547115, 0.052076958349629, 0.052076958349629, 0.052076958349629, 
0.052076958349629, 0.052076958349629, 0.052076958349629, 0.0410332568832433, 
0.0389940601722214, 0.0441742111970355, 0.0441742111970355, 0.0441742111970355, 
0.0438099091238968, 0.0409906284310306, 0.0409906284310306, 0.035480410134286, 
0.035480410134286, 0.035480410134286, 0.035480410134286, 0.035480410134286, 
0.035480410134286, 0.035480410134286, 0.0345381204372174, 0.0287729883480053, 
0.0287729883480053), Production = c(1635156.04305, 474707.64025, 
170773.40775, 64708.312, 64708.312, 64708.312, 949.72635, 949.72635, 
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 
949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 949.72635, 
949.72635, 949.72635)), class = "data.frame", row.names = c(NA,-34L))

weights <- c(0.5,0.5) 

scaled <- df1 |>
  mutate(Coverage = min(Coverage) / Coverage,
         Production = Production / max(Production))

scaled <- scaled |>
  rowwise() |>
  mutate(`Performance Score` = weighted.mean(c(Coverage, Production), w = weights))

scaled$Rank <- (nrow(scaled) + 1) - rank(scaled$`Performance Score`)

ui <- fluidPage(

    column(4,
         wellPanel(
           
  numericInput("weight1", label = h4("Weight 1"),
               min = 0, max = 1, value = ""),

 selectInput("maxmin1", label = h5("Maximize or Minimize?"),
                       choices = list("","Maximize " = "+", "Minimize" = "-"), selected = NULL),
  
  numericInput("weight2", label = h4("Weight 2"),
               min = 0, max = 1, value = ""),
  
 selectInput("maxmin2", label = h5("Maximize or Minimize?"),
                       choices = list("","Maximize " = "+", "Minimize" = "-"), selected = NULL),
  helpText("The sum of weights should be equal to 1"))),
  
  hr(),
  
  column(8,
         tabsetPanel(
           tabPanel("table", dataTableOutput('table'))))

)

server <- function(input, output,session) {
  
  observeEvent(input$weight1, {
    updateNumericInput(session, 'weight2',
                       value = 1 - input$weight1)
  })

  output$table <- renderDataTable({
  datatable (scaled,options = list(columnDefs = list(list(className = 'dt-center', targets = "_all")),
                                            paging =TRUE,searching = FALSE, pageLength =  10,dom = 'tip',scrollX=TRUE),
               rownames = FALSE) 
  
    })
}

shinyApp(ui = ui, server = server)
   
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像
相关帖子