R 条件筛选在应用程序中不起作用
我正在R中构建一个闪亮的应用程序,它将:I)使用两个单选按钮过滤数据集,ii)绘制过滤后的数据集,以及iii)使用刷点识别异常点以供进一步检查 下面是我的数据集的简短版本以及闪亮的代码。基于第一个单选按钮的过滤似乎工作正常。然而,车轮在第二次无线电对接的基础上通过滤波从总线上脱落。我正在尝试设置代码,以便绘制第二个单选按钮的值,但这没有发生,我还没有找出问题所在 这就是我认为问题所在…但我现在不知所措R 条件筛选在应用程序中不起作用,r,shiny,R,Shiny,我正在R中构建一个闪亮的应用程序,它将:I)使用两个单选按钮过滤数据集,ii)绘制过滤后的数据集,以及iii)使用刷点识别异常点以供进一步检查 下面是我的数据集的简短版本以及闪亮的代码。基于第一个单选按钮的过滤似乎工作正常。然而,车轮在第二次无线电对接的基础上通过滤波从总线上脱落。我正在尝试设置代码,以便绘制第二个单选按钮的值,但这没有发生,我还没有找出问题所在 这就是我认为问题所在…但我现在不知所措 plot_subset_df <- reactive({ filter(sub_
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE & DAYS_DIFFERENCE <= input$DAYS_DIFFERENCE)})
代码的当前版本
library(DT)
library(dplyr)
library(tidyr)
library(ggplot2)
library(shiny)
# Setup data set
sub$NUMBER = as.factor(sub$NUMBER)
# Shiny code
ui <- fluidPage(
sidebarPanel(
radioButtons("CODE", "SWMMP code",
choices = unique(sub$CODE)),
radioButtons("DAYS_DIFFERENCE", "Days difference",
choices = c("0" = 0,
"3" = 3,
"7" = 7,
"10" = 10,
"14" = 14,
"20" = 20,
"25" = 25,
"30" = 30,
"All" = 100000))
),
mainPanel(
plotOutput("plot1", brush = "plot_brush"),
DTOutput("dt_of_brushed_points"),
verbatimTextOutput("actual_data_brushed"),
verbatimTextOutput("actual_data_full")))
server <- function(input, output, session) {
# Make data set reactive values
sub_react = reactiveValues(data = sub)
# Get data for plot
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE & DAYS_DIFFERENCE <= input$DAYS_DIFFERENCE)
})
# Make plot
output$plot1 <- renderPlot({
ggplot(plot_subset_df(), aes(x = DEPTH, y = INHA)) +
geom_point(aes(size = 5, color = NUMBER))+
theme(legend.position = "top",
legend.title = element_blank(),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black"))
})
# Display rows of data highlighted in plot
brushed_df <- reactive({
brushedPoints(plot_subset_df(), input$plot_brush, xvar = "DEPTH", yvar = "INHA",
allRows = FALSE)})
# Render highlighted data in plot
output$dt_of_brushed_points = renderDT(brushed_df(), selection = 'none', editable = TRUE)
# Show actual data frame to check edits are correct
output$actual_data_brushed <- renderPrint({brushed_df()})
#output$actual_data_full <- renderPrint({sub_react$data})
# Transfer edits from top table to bottom table
proxy = dataTableProxy('dt_of_brushed_points')
observeEvent(input$dt_of_brushed_points_cell_edit, {
info = input$dt_of_brushed_points_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
row_to_change <- brushed_df()[i, 1]
sub_react$data[row_to_change, j] <- isolate(coerceValue(v, sub_react$data[row_to_change, j]))
replaceData(proxy, sub_react$data, resetPaging = FALSE)})
}
shinyApp(ui, server)
库(DT)
图书馆(dplyr)
图书馆(tidyr)
图书馆(GG2)
图书馆(闪亮)
#设置数据集
sub$编号=组件系数(sub$编号)
#闪亮代码
ui在我看来,问题可能是您的DAYS\u DIFFERENCE
列中的NA
s。你可以考虑使用:
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE & DAYS_DIFFERENCE %in%
c(0:input$DAYS_DIFFERENCE))
})
plot\u subset\u df=
,但在您的代码中,我认为问题可能是您的DAYS\u DIFFERENCE
列中的NA
s。你可以考虑使用:
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE & DAYS_DIFFERENCE %in%
c(0:input$DAYS_DIFFERENCE))
})
plot\u subset\u df=
,但在您的代码中,问题是input$DAYS\u差异
是字符类型。例如,如果将“7”与值1:20进行比较,则仅显示8和9大于7
which(1:20 > "7")
#[1] 8 9
在筛选数据之前,将输入$DAYS\u DIFFERENCE
更改为数字/整数
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE &
DAYS_DIFFERENCE >= as.numeric(input$DAYS_DIFFERENCE))
})
plot_subset_df=as.numeric(输入$DAYS_DIFFERENCE))
})
问题是输入$DAYS\u差异
是字符类型。例如,如果将“7”与值1:20比较,则仅显示8和9大于7
which(1:20 > "7")
#[1] 8 9
在筛选数据之前,将输入$DAYS\u DIFFERENCE
更改为数字/整数
plot_subset_df <- reactive({
filter(sub_react$data, CODE == input$CODE &
DAYS_DIFFERENCE >= as.numeric(input$DAYS_DIFFERENCE))
})
plot_subset_df=as.numeric(输入$DAYS_DIFFERENCE))
})
根据@Ronak Shah的评论:这当然也是事实,我没有注意到这一点。使用c(0:input$DAYS\u DIFFERENCE)
我不知不觉地将列转换为整数。给这只猫剥皮有很多方法。谢谢你的帮助!保重。根据@Ronak Shah的评论:这当然也是事实,我没有注意到这一点。使用c(0:input$DAYS\u DIFFERENCE)
我不知不觉地将列转换为整数。给这只猫剥皮有很多方法。谢谢你的帮助!保重。谢谢@Ronak Shah!我没有注意到输入产生了一个字符。保重。谢谢@Ronak Shah!我没有注意到输入产生了一个字符。当心。