Предупреждение: фактор содержит неявный NA - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в R и Shiny, и я пытаюсь создать интерактивный сюжет с ggplot2.Когда пользователь установит флажок, он получит доступ к полю множественного выбора для настройки графика.

Исходный кадр данных содержит пропущенные значения, обозначенные как "N/A" в столбцах Publisher и Year.Я удалил строки, содержащие NA, с помощью complete.cases, поэтому на нем не должно быть никаких NA.

Я запускаю свое приложение: ОК.Я получаю по умолчанию сюжет: ОК.Я отмечаю флажок: Warning: Factor 'Publisher' contains implicit NA, consider using 'forcats::fct_explicit_na'

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

app.R:

df<-read.csv("vgsales.csv")
df$Year[df$Year=="N/A"]<-NA
df$Year<-factor(df$Year)
df$Publisher[df$Publisher=="N/A"]<-NA
df$Publisher<-factor(df$Publisher)
df<-df[complete.cases(df),]

pubSales<-na.omit(df
    %>% group_by(Publisher, Year) 
    %>% summarise(Global_Sales=sum(Global_Sales))
)
pubSales<-pubSales[order(pubSales$Year),]

top5Pub<-head(unique(pubSales[order(-pubSales$Global_Sales),]$Publisher),5)

ui <- navbarPage("Video Games Sales",
    tabPanel("Publishers",
        mainPanel(
            titlePanel(
                title = "Publishers sales"
            ),
            sidebarPanel(
                radioButtons(
                    "pubOptions",
                    "Options",
                    c("Top 5 Publishers"="topFivePub",
                      "Custom Publishers"="customPub"),
                    selected="topFivePub"
                ),
                uiOutput("customPubUI")
            ),
            mainPanel(
                plotOutput("pubPlot")
            ),
            width=12
        )
    )
)

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

    output$customPubUI<-renderUI({
        if(input$pubOptions=="customPub"){
            selectInput(
                "selectedPub",
                "Editeurs",
                pubSales$Publisher,
                multiple=TRUE
            )
        }
    })

    output$pubSales<-renderTable(pubSales)
    output$pubPlot<-renderPlot({
        ggplot()+
            if(input$pubOptions=="customPub"){
                geom_line(
                    data=pubSales[pubSales$Publisher %in% input$selectedPub,],
                    aes(x=Year,y=Global_Sales,colour=Publisher,group=Publisher)
                )
            }else{
                geom_line(
                    data=pubSales[pubSales$Publisher %in% top5Pub,],
                    aes(x=Year,y=Global_Sales,colour=Publisher,group=Publisher)
                )
            }
    })

}

shinyApp(ui, server)

1 Ответ

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

С:

require(shiny)
require(tidyverse)

# Create some sample data:
year <- rep(2000:2018, each=3)

publ <- rep(strrep(c("Pub 1", "Pub2", "pub3"), 1), 19)

Global_Sales <- rep(sample(1:100,19),3)
# Create a observation with NA:
newline <- c(NA, NA, 33)

df <- data.frame(Year = year, Publisher = publ, Global_Sales = Global_Sales)
df <- rbind(df,newline)
df <- na.omit(df)

pubSales<-df %>%  group_by(Publisher, Year)  %>%
  summarise(Global_Sales=sum(Global_Sales)) 

pubSales$Publisher <- as.character(pubSales$Publisher) 

ошибка больше не появляется.До тех пор, пока данные, с которыми вы работаете в «блестящем» виде, не содержат факторов (отсюда и «неявный NA»), ошибка не появлялась в моих примерах данных.

...