【问题标题】:shiny sliderInput range minimum and maximum values闪亮的滑块输入范围最小值和最大值
【发布时间】:2016-11-25 14:38:42
【问题描述】:

我需要使用范围值调整直方图输出:

(其中 m 是任意矩阵)

#ui.R
sliderInput(inputId="adjust", label="Choose adjacency threshold", value=c(0.001, 0.9), min=0.0001, max=1),
plotOutput("hist")

#server.R
df<-reactive({
idx = m > min(input$adjust) & m < max(input$adjust)
    data.frame(
      id = row(m)[idx],
      value = m[idx])
})
output$hist<-renderPlot({hist(df()$values)})

然而,这似乎不会影响直方图 - 当我切换滑块时它会重新渲染,但每次都相同......这需要很长时间,而且它似乎只是将所有值都包含在考虑?

有人知道怎么做吗?

当我尝试打印滑块的最小值/最大值时,页面上什么也没有:

#ui.R
verbatimTextOutput("x")
#server
output$x<-renderPrint({min(input$adjust)})

因此我可能会以完全错误的方式来处理这个问题......有人知道该怎么做吗?

完整示例

library(shiny)
runApp(list(ui = fluidPage(sliderInput(inputId="adjust", label="Choose adjacency threshold", value=c(0.001, 0.9), min=0.0001, max=1),
plotOutput("hist")
server=function(input, output){
   adjacentmat<-reactive({adjacency(dat)})
   data<-reactive({
    adj_mat<-adjacentmat()
    adj_mat[adj_mat < input$adjust] <- 0
    m<-adj_mat
    idx = m > min(input$adjust) & m < max(input$adjust)
    data.frame(
      source = row(m)[idx],
      target = col(m)[idx],
      corr = m[idx])
  })
  output$hist<-renderPlot({hist(data()$corr)})
}
)

使用以下代码生成 dat 变量:

library('dplyr')
set.seed(1)

# generate a couple clusters
nodes_per_cluster <- 30
n <- 10

nvals <- nodes_per_cluster * n

# cluster 1 (increasing) 
cluster1 <- matrix(rep((1:n)/4, nodes_per_cluster) + 
                   rnorm(nvals, sd=1),
                   nrow=nodes_per_cluster, byrow=TRUE)

# cluster 2 (decreasing)
cluster2 <- matrix(rep((n:1)/4, nodes_per_cluster) + 
                   rnorm(nvals, sd=1),
                   nrow=nodes_per_cluster, byrow=TRUE)

# noise cluster
noise <- matrix(sample(1:2, nvals, replace=TRUE) +
                rnorm(nvals, sd=1.5),
                nrow=nodes_per_cluster, byrow=TRUE)

dat <- rbind(cluster1, cluster2, noise)
colnames(dat) <- paste0('n', 1:n)
rownames(dat) <- c(paste0('cluster1_', 1:nodes_per_cluster), 
                   paste0('cluster2_', 1:nodes_per_cluster),
                   paste0('noise_',    1:nodes_per_cluster))

【问题讨论】:

    标签: slider shiny


    【解决方案1】:

    这对我有用:

    library(shiny)
    runApp(list(ui = fluidPage(
      mainPanel(sliderInput("test", "Select values", value= c(.001,.9), min= 0.0001, max= 1)),
      verbatimTextOutput("test2")
      ),
      server = function(input, output, session) {
        output$test2 <- renderPrint(min(input$test))
      }))
    

    我猜您的问题出在您未向我们展示的代码中。您能否给出问题的整个运行示例的代码?

    【讨论】:

    • 感谢 Carl(我已经更新了完整示例下的 Q),它实际上可以工作,这意味着我的代码是有效的,但是管道现在需要很长时间才能运行,并增加了对 'm' 值的要求低于某个阈值以及高于另一个阈值...有没有办法解决这个问题//
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多