在R社区的帮助下完全解决了这个问题。在此处输入图像描述
治疗NAs是关键:
“如果您查看data_pg_df$Region,您会发现它有许多NAs:
> data_pg_df$Region
[1] NA NA NA NA NA
[6] NA NA NA "Latin America" NA
[11] NA NA NA NA NA
[16] NA NA NA NA NA
[21] NA NA NA NA NA
[26] NA NA NA NA NA
[31] NA NA NA NA NA
[36] NA NA NA "North America" NA
[41] NA "Asia" NA NA NA
[46] NA NA NA NA NA
[51] NA NA NA NA NA
[56] NA NA "Europe" NA NA
[61] NA NA NA NA NA
...
对于data_pg_df$Region==input$regionInput,您将其与一个值进行比较,如
“亚洲”。在R中,如果将一个值与NA进行比较,就会得到NA。
> data_pg_df$Region == "Asia"
[1] NA NA NA NA NA NA NA NA FALSE NA NA NA NA
NA NA
[16] NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA
[31] NA NA NA NA NA NA NA NA FALSE NA NA TRUE NA
NA NA
[46] NA NA NA NA NA NA NA NA NA NA NA NA FALSE
NA NA
[61] NA NA NA NA NA NA NA NA NA NA NA NA NA
NA NA
...
而且不能使用NA索引到data_pg_df对象。
你需要处理好NAs。我不知道什么适合您的数据集,但看起来您可能只希望保留==解析为TRUE的行,并删除将导致NA和FALSE的行。为此,您可以添加一个带有is.na()的支票:
!is.na(data_pg_df$Region) & data_pg_df$Region == "Asia"
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[16] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[31] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
FALSE FALSE
[46] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
FALSE FALSE
...
那么你就会:
selectedRegion <- reactive({
data_pg_df[!is.na(data_pg_df$Region) & data_pg_df$Region == input$regionInput, ]
})"