R 编程 Shiny Reactive 基础 - 数据类型

用户2585576

提前谢谢大家。我正在尝试缩小范围,但我是闪亮的新手,所以我无法缩小范围。我的主要困惑是反应式与其他类型的反应式(?)结构。

我想要做的是列出 R 基本数据包。我有一个选择框。这样可行。选择后,R 将显示该数据集的字段,以便用户可以接受 Y 和 X 值。(我意识到有些集合没有为此格式化。)下面列出的代码在主面板中给出了“不正确的维度数”。错误似乎是在调用名称的某个地方。我似乎不明白如何在他们有创意后将反应性元素放入用户界面。关于这个的任何提示?

同样,数据集列表有效。数据表被正确拉取。但是名称不存在,因此可以选择它们来构建情节。

library(shiny)
set.seed(10101)

dataPkgs <- data(package='datasets')[[3]]
pkgNames <- dataPkgs[,3]

ui <- fluidPage(
  headerPanel('R Data k-means clustering'),
  sidebarPanel(

    selectInput('choosedata', 'Choose a Data Set',pkgNames,selected="mtcars"),

    helpText("Listing should make available all basic datasets available in base R install.
             Remember many of the data sets will be ill-fit for this type of analysis."),

    selectInput('ycol', 'Select Independent Y', textOutput('selDFNames')),
    selectInput('xcol', 'Select Dependent X', textOutput('selDFNames')),

    numericInput('clusters', '1-7 clusters', 3,
                 min = 1, max = 7)
  ),
  mainPanel(
    plotOutput('plot1')
  )
)


server <- function(input, output, session) {

  selDF <- renderTable({
    get(input$choosedata)
  })

  output$selDFNames <- renderText({
    names(selDF())
  })

  selDFset <- reactive({
    selDF()[, c(input$xcol, input$ycol)]
  })

  clusters <- reactive({
    kmeans(selDFset(), input$clusters)
  })

  output$plot1 <- renderPlot({

    plot(selDFset(),
         col = clusters()$cluster,
         pch = 20, cex = 3)
    points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
  })

}

shinyApp(ui = ui, server = server)
猪排

我将添加更多测试用例并捕获我的答案,但如果您获得您知道有效的数据集而不是仅仅要求所有数据集,则最好:

library(shiny)
set.seed(10101)

dataPkgs <- data(package='datasets')[[3]]
pkgNames <- dataPkgs[,3]

longley[,c("GNP.deflator","GNP.deflator")]

ui <- fluidPage(
  headerPanel('R Data k-means clustering'),
  sidebarPanel(

    selectInput('choosedata', 'Choose a Data Set',pkgNames,selected="mtcars"),

    helpText("Listing should make available all basic datasets available in base R install.
             Remember many of the data sets will be ill-fit for this type of analysis."),

    selectInput('ycol', 'Select Independent Y', choices = NULL),
    selectInput('xcol', 'Select Dependent X', choices = NULL),

    numericInput('clusters', '1-7 clusters', 3,min = 1, max = 7)
    ),
  mainPanel(
    plotOutput('plot1')
  )
)

server <- function(input, output, session) {

  selDF <- reactive({
    data <- tryCatch(get(input$choosedata), error=function(e) NULL)
    if(is.null(data)){
      return()
    }
    data
  })

  observeEvent(selDF(),{
    updateSelectInput(session,"xcol",choices=c(names(selDF())))
    updateSelectInput(session,"ycol",choices=c(names(selDF())))
  })

  selDFset <- eventReactive(c(input$xcol, input$ycol),{
    req(input$xcol)
    req(input$ycol)
    selDF()[,c(input$xcol, input$ycol)]
  })

  clusters <- reactive({
    kmeans(selDFset(), input$clusters)
  })

  output$plot1 <- renderPlot({
    req(selDFset())
    plot(selDFset(),col = clusters()$cluster,pch = 20, cex = 3)
    points(clusters()$centers, pch = 4, cex = 4, lwd = 4)
  })
}

shinyApp(ui = ui, server = server)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章