闪亮的sliderInput范围最小值和最大值

时间:2016-07-21 20:29:03

标签: slider shiny

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

(其中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))

1 个答案:

答案 0 :(得分:2)

这对我有用:

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))
  }))

我猜你的问题出现在你没有向我们展示过的代码中。你能给出问题的整个运行示例的代码吗?