блестящий ползунок Минимальные и максимальные значения диапазона ввода

Мне нужно настроить вывод гистограммы на блестящий со значениями диапазона:

(где 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))

person johnny utah    schedule 21.07.2016    source источник


Ответы (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))
  }))

Я предполагаю, что ваша проблема где-то в коде, который вы нам не показали. Можете ли вы дать код для всего работающего примера вашей проблемы?

person Carl    schedule 21.07.2016
comment
спасибо, Карл (я обновил Q в ПОЛНОМ ПРИМЕРЕ), который действительно работает, что означает, что мой код был действителен, однако конвейер работает очень долго с дополнительным требованием, чтобы значение 'm' было ниже определенного порога, а также над другим ... есть ли способ обойти это // - person johnny utah; 22.07.2016