在R Shiny中如何分离滑块输入值并使用它们进行过滤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在R Shiny中如何分离滑块输入值并使用它们进行过滤相关的知识,希望对你有一定的参考价值。

在R的shiny包中,您可以使用具有上限和下限的sliderInput滑块小部件。

在将数据传递给UI.R之前,我希望能够分离上限和下限值并使用它们过滤一列数据。

例如:

Server.R

library(shiny)
data <- read.csv('some_data_to_filter.csv')

# Define server logic for slider examples
shinyServer(function(input, output) {

  # Reactive expression to compose a data frame containing all of
  # the values
  sliderValues <- reactive({

    # Compose data frame
    data.frame(
      Name = c("Range"),
      Value = as.character(c(paste(input$range, collapse=' '),)), 
      stringsAsFactors=FALSE)
  }) 

  # Show the values using an html table
  output$values <- renderTable({
    sliderValues()
  })
})

长子。 [R

library(shiny)    
# Define UI for slider demo application
shinyUI(fluidPage(

  #  Application title
  titlePanel("Sliders"),

  sidebarLayout(
    sidebarPanel(      
  # Specification of range within an interval
      sliderInput("range", "Range:",
                  min = 1, max = 1000, value = c(200,500))
),

    # A table summarizing the values entered
    mainPanel(
      tableOutput("values")
    )
  )
))

在上面的例子中我读了数据,我有一个滑块,但没有像我想要的那样过滤数据。

这是我分割和过滤的最佳尝试,但它会抛出一个错误:

myrange <- reactive({ data.frame(strsplit(Value = input$slider))})
data <- data[data$colname <= as.numeric(myrange[2]),]
data <- data[data$colname >= as.numeric(myrange[2]),]
答案

如果我理解你的问题,你想根据滑块输入权限的两个限制对数据进行子集化。如果是这样,请使用下面的解决方案和样本数据

library(shiny)

# Sample Data
area <- seq(from=10,to=100, by=10);peri <- seq(from=2710.1,to=2800.1, by=10)
shape <- seq(from=0.1,to=1, by=0.1);perm <- seq(from=1,to=100, by=10)
my_data <- as.data.frame(cbind(area,peri,shape,perm))

ui = fluidPage(
  sidebarPanel(sliderInput("range", "Select Range",min = 1, max = 10, value = c(2, 5)),width = 3),
  mainPanel(tableOutput("view"))
)

server = function(input, output) {
  output$view <- renderTable({
    test <- my_data[input$range[1]:input$range[2],]
    test},include.rownames=FALSE)
}
runApp(list(ui = ui, server = server)) 

以上是关于在R Shiny中如何分离滑块输入值并使用它们进行过滤的主要内容,如果未能解决你的问题,请参考以下文章

如何使用滑块输入在 R Shiny 中输入超过 2 个值

R Shiny 输入滑块范围值

Shiny R仅绘制滑块范围的极值

在 Shiny 中使用带有 ion.RangeSlider 滑块输入的日期

如何通过 div 标签要求在 R Shiny 中输入?

使用Shiny滑块控制ggplot上的输出