Определение точек и печать таблицы данных с помощью brushedPoints - PullRequest
0 голосов
/ 26 июня 2018

Я хотел бы использовать анализ главных компонентов для задачи, которая была решена по этой ссылке Определить точки в прямоугольнике на диаграмме рассеяния . Диаграмма отображается правильно, но я что-то упускаю при отображении таблицы. Если кто-то знал, в чем проблема, пожалуйста, помогите.

Код (РЕДАКТИРОВАТЬ):

head(decathlon2.active[, 1:6], 4)
##         X100m Long.jump Shot.put High.jump X400m X110m.hurdle
## SEBRLE   11.0      7.58     14.8      2.07  49.8         14.7
## CLAY     10.8      7.40     14.3      1.86  49.4         14.1
## BERNARD  11.0      7.23     14.2      1.92  48.9         15.0
## YURKOV   11.3      7.09     15.2      2.10  50.4         15.3

#################################################################

library(shiny)
library(DT)

server <- function(input, output) {
  output$plot1 <- renderPlot({
    data(decathlon2)
    decathlon2.active <- decathlon2[1:23, 1:10]
    head(decathlon2.active[, 1:6], 4)
    res.pca <- PCA(decathlon2.active, graph = FALSE)
    fviz_pca_ind(res.pca)

  })

  df <- reactive({
    res.pca$ind$coord
  })

    output$plotui <- renderUI({
    plotOutput("plot1", height=300,
               brush = brushOpts(id = "plot_brush")
    )
  })

  output$plot_brushed_points <- renderDataTable({
      res <- brushedPoints(df(), input$plot_brush) 

    datatable(res)
  })
}

ui <- fluidPage(
  uiOutput("plotui"),
  dataTableOutput("plot_brushed_points")
)

shinyApp(ui = ui, server = server)

Результат:

enter image description here

1 Ответ

0 голосов
/ 26 июня 2018

Я думаю, что ваша проблема в том, что в res <- brushedPoints(df, input$plot_brush) вы ссылаетесь на фрейм данных df, который содержит данные, сгенерированные вами в вашей команде renderPlot({...}). Эти данные не будут доступны для вызова в вашей выходной команде таблицы. Попробуйте добавить

df <- reactive({
    #your data here
})

и затем звоните res <- brushedPoints(df(), input$plot_brush).

Если это не сработает, опубликуйте примеры данных, и я обновлю свой ответ.

Edit:

Вот более явное предложение. Вы все еще пытаетесь вызвать данные из renderPlot({...}). Попробуйте сгенерировать данные в реактивном утверждении, а затем вызвать его после.

df <- reactive({
    data(decathlon2)
    decathlon2.active <- decathlon2[1:23, 1:10]
    res.pca <- PCA(decathlon2.active, graph = FALSE)
})

Вам также потребуется указать аргументы xvar и yvar для brushedPoints.

https://shiny.rstudio.com/reference/shiny/latest/brushedPoints.html

...