【发布时间】:2019-03-05 09:44:26
【问题描述】:
我是 R 和 Shiny 的新手,我正在尝试使用 ggplot2 创建一个交互式绘图。当用户选中复选框时,他可以访问多选字段来自定义绘图。
原始数据框包含在Publisher 和Year 列中标识为"N/A" 的缺失值。我用complete.cases 删除了包含 NA 的行,所以它不应该留下任何 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)
【问题讨论】:
-
如果可能,请提供示例数据,以便您的问题可以重现。
-
即使您将 Publisher 从
factor转换为character,也会出现该错误吗? -
@heck1 我从 kaggle 获得了我的数据集:kaggle.com/gregorut/videogamesales
-
@Sonny 我会尽快尝试的
-
有点旁白,但在
read.csv中,您可以使用参数na.strings告诉R 在您正在阅读的数据中NA的格式,例如df<-read.csv("vgsales.csv" , na.strings = "N/A"),这可以让您不必在以后转换它们。
标签: r shiny na missing-data