我是R和Shiny的新手,我正在尝试用ggplot2创建一个交互式的情节。当用户选中该复选框时,他可以访问多选字段以自定义绘图。
原始数据帧包含在Publisher和Year列中标识为"N/A"的缺失值。我用complete.cases删除了包含NAs的行,所以它应该不会有任何NA了。
我运行我的应用程序:好的。我得到了默认的图: OK。我选中了复选框: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)发布于 2019-03-05 18:07:10
通过以下方式:
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) 错误不再出现。只要您在shiny中处理的数据不包含因子(这就是“隐式NA”的来源),错误就不会出现在我的样本数据中。
发布于 2019-10-23 21:16:20
弹出警告是因为NA不是因子中的一个级别。它就是缺失了。该警告提醒您,当您对该因子执行操作时,该因子中存在一个不会显示的“隐藏”级别。
例如,一个基本因子:
a.factor <- as.factor(c('a', 'b', 'c', NA))当我们打印它或在快捷表中总结时,只有3个级别:
> print(a.factor)
[1] a b c <NA>
Levels: a b c
> table(a.factor)
a.factor
a b c
1 1 1 发布于 2020-09-07 05:53:29
如果您的数据帧包含未使用的因子级别,我使用
pubSales <- droplevels(pubSales)这将为我删除未使用的级别和错误。
https://stackoverflow.com/questions/54999758
复制相似问题