2016-07-21 18 views
1

Ich brauche ein Histogramm Ausgabe in glänzend mit einer Reihe Wert einzustellen:glänzend sliderInput Bereich Minimal- und Maximalwerte

(wobei m eine beliebige Matrix ist)

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

aber dies scheint nicht zu Beeinflussen Sie das Histogramm - es rendert wieder, wenn ich den Schieberegler umschalte, aber es ist immer gleich ... es dauert sehr lange und es scheint nur alle Werte zu berücksichtigen.

Weiß jemand, wie man das funktioniert?

wenn ich versuche, die min Schieberegler zum Drucken/max wert- kommt nichts zur Seite:

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

Daher könnte ich dies den völlig falschen Weg nähern ... Wer weiß, wie dies zu tun?

FULL Beispiel

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

die dat Variable mit dem folgenden Code erzeugen:

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

Antwort

2

Dies funktioniert für mich:

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

Ich vermute, Ihr Problem ist irgendwo in der Code, den Sie uns nicht gezeigt haben. Können Sie den Code für das gesamte laufende Beispiel Ihres Problems angeben?

+0

Dank Carl (ich habe das Q unter VOLLSTÄNDIGES BEISPIEL aktualisiert), das tatsächlich funktioniert, was bedeutet, dass mein Code gültig war, aber die Pipeline dauert jetzt wirklich lange mit der zusätzlichen Anforderung für den Wert von 'm' unter einem bestimmten Schwellenwert zu sein wie auch über einem anderen ... gibt es einen Weg, um dies zu umgehen // –