R блестящие матовые точки таблицы пустых строк NA - PullRequest
0 голосов
/ 15 января 2019

Я работаю над приложением shiny, в котором я разрешаю пользователю выбирать критерии построения графика, а затем также разрешать им чистить график и видеть их выбор в таблице ниже. У меня есть NA значения в моих данных. Я заметил, что эти NAs попадают в мою таблицу с полированными точками как полные строки NA. Я могу удалить их вручную с помощью что-то вроде этого . Тем не менее, мне было интересно, если я, возможно, делал что-то не так с моей кистью, которая вызывает это.

Код с рабочим примером приведен ниже. Я также включил изображение выбора кисти, демонстрирующее, что я имею в виду.

library(shiny)
library(tidyverse)

# replace some random values in mtcars with NA
set.seed(1)
mtnew <-
  as.data.frame(lapply(mtcars, function(m)
    m[sample(
      c(TRUE, NA),
      prob = c(0.8, 0.2),
      size = length(m),
      replace = TRUE
    )]))


# set up UI that allows user to pick x and y variables, see a plot, 
#  brush the plot, and see a table based on the brush
ui <- fluidPage(

  titlePanel("Shiny Test"),

  sidebarLayout(

    sidebarPanel(
      selectInput("xvar", 
                  "pick x", 
                  choices = names(mtnew)),
      selectInput("yvar", 
                  "pick y", 
                  choices = names(mtnew))),

    mainPanel(
      plotOutput("myplot", 
                 brush = brushOpts(id = "plot_brush")),
      tableOutput("mytable")
    )
  )
)


server <- function(input, output) {
  output$myplot <- renderPlot({
    ggplot(data = mtnew) + 
      geom_point(aes(x = !!rlang::sym(input$xvar), 
                     y = !!rlang::sym(input$yvar)))
  })

  output$mytable <- renderTable({
    brush_out <- brushedPoints(mtnew, input$plot_brush)
  })
}

# Complete app with UI and server components
shinyApp(ui, server)

enter image description here

1 Ответ

0 голосов
/ 31 марта 2019

Полагаю, вам придется установить, какие данные вы хотите представить.

Возможно, вы захотите иметь только определенную запись без NA, в этом случае я бы предложил использовать функцию complete.cases. Тем не менее, это решение значительно сократит ваш набор данных (ниже я применил к вашему коду).

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

library(shiny)
library(tidyverse)

# replace some random values in mtcars with NA
set.seed(1)
mtnew <-
  as.data.frame(lapply(mtcars, function(m)
    m[sample(
      c(TRUE, NA),
      prob = c(0.8, 0.2),
      size = length(m),
      replace = TRUE
    )]))

mtnew_complete <- mtnew[complete.cases(mtnew),] 

# set up UI that allows user to pick x and y variables, see a plot, 
#  brush the plot, and see a table based on the brush
ui <- fluidPage(

  titlePanel("Shiny Test"),

  sidebarLayout(

    sidebarPanel(
      selectInput("xvar", 
                  "pick x", 
                  choices = names(mtnew)),
      selectInput("yvar", 
                  "pick y", 
                  choices = names(mtnew))),

    mainPanel(
      plotOutput("myplot", 
                 brush = brushOpts(id = "plot_brush")),
      tableOutput("mytable")
    )
  )
)


server <- function(input, output) {
  output$myplot <- renderPlot({
    #ggplot(data = mtnew) + 
    ggplot(data = mtnew_complete) + 
      geom_point(aes(x = !!rlang::sym(input$xvar), 
                     y = !!rlang::sym(input$yvar)))
  })

  output$mytable <- renderTable({
    #brush_out <- brushedPoints(mtnew, input$plot_brush)
    brush_out <- brushedPoints(mtnew_complete, input$plot_brush)
  })
}

# Complete app with UI and server components
shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...