根据用户输入过滤数据范围

时间:2016-07-15 18:22:42

标签: r shiny ggvis

我有一个闪亮的应用程序,它在散点图中绘制两个变量,并根据用户输入过滤。我试图让它,以便用户可以根据他们指定的范围过滤数据。但是,我只希望在填写字段时应用此过滤器,如果字段为空(null)则返回所有数据。例如,如果您启动我附加的代码,我希望用户能够检查“指定数据范围”复选框,当他们在min x输入框中输入4.8时,数据将被过滤掉,以便没有数据点现在考虑不到4.8。我准备的示例代码在下面,我试图在中间附近评论。

  paste0("`", input$x, "`") >= minX,
  paste0("`", input$x, "`") <= maxX,
  paste0("`", input$y, "`") >= minY,
  paste0("`", input$y, "`") <= maxY

更新:

我认为我正处于正确的轨道上,但是如果更改为任何&gt; = 0,则min x和min y过滤掉所有数据,如果更改则其他过滤器不会执行任何操作。

{{1}}

1 个答案:

答案 0 :(得分:0)

我发现了一个基于这个完全不相关的帖子的答案,该帖子接近他们如何以不同的方式处理数据,这对我有用。 Downloading png from Shiny (R)

唯一的变化是在以下过滤的filteredData中。

#Set up reactive variables for ranges
filteredData <- reactive({

minX <- input$minxdata
maxX <- input$maxxdata
minY <- input$minydata
maxY <- input$maxydata
a <- which(names(alldata)==input$x)
xvariable <- as.numeric(alldata[,a])
b <- which(names(alldata)==input$y)
yvariable <- as.numeric(alldata[,b])

# Apply filters
m <- alldata %>% filter(
`Species` %in% input$species,
xvariable >= minX,
xvariable <= maxX,
yvariable >= minY,
yvariable <= maxY
)
m <- droplevels(as.data.frame(m))
m
})