2015-05-29 132 views
1

引用在ggvis情节单击点我想用一个点击点的值进行进一步的处理,但我不清楚如何引用数据如何在闪亮

library(shiny) 
library(ggvis) 
library(dplyr) 

df <- data.frame(a=c(1,2),b=c(5,3)) 



runApp(list(
    ui = bootstrapPage(
    ggvisOutput("plot") 

), 

server = function(..., session) { 

# function to handle click 
getData = function(data,location,session){ 

if(is.null(data)) return(NULL) 

# This returns values to console 
print(glimpse(data)) 
# Observations: 1 
# Variables: 
# $ a (int) 2 
# $ b (int) 3 

} 

# create plot 
df %>% 
    ggvis(~a, ~b) %>% 
    layer_points() %>% 
    handle_click(getData) %>% 
    bind_shiny("plot") 

# further processing 

clickedData <- reactive({ 

# how do I reference the value 'a' e.g. 2 of the clicked point' 
}) 
} 
)) 

TIA

回答

0

这里的一个可以打印data.frame的工作解决方案。你很近。

df <- data.frame(a = 1:5, b = 101:105) 

runApp(shinyApp(
    ui = fluidPage(
    ggvisOutput("ggvis") 
), 
    server = function(input, output, session) { 
    clickFunc <- function(data, location, session) { 
     cat(str(data)) 
    } 

    df %>% 
     ggvis(~ a, ~b) %>% 
     layer_points %>% 
     handle_click(clickFunc) %>% 
     bind_shiny("ggvis") 
    } 
)) 

编辑
(声明:我从来没有使用过ggvis闪亮,直到5分钟前,所以也许这是不正确的做法,但这个工程)

下面介绍如何使用数据在你的UI

df <- data.frame(a = 1:5, b = 101:105) 

runApp(shinyApp(
    ui = fluidPage(
    div("a:", textOutput("aVal", inline = TRUE)), 
    div("b:", textOutput("bVal", inline = TRUE)), 
    ggvisOutput("ggvis") 
), 
    server = function(input, output, session) { 
    clickFunc <- function(data, location, session) { 
     session$output$aVal <- renderText({ data$a }) 
     session$output$bVal <- renderText({ data$b }) 
    } 

    df %>% 
     ggvis(~ a, ~b) %>% 
     layer_points %>% 
     handle_click(clickFunc) %>% 
     bind_shiny("ggvis") 
    } 
)) 
+0

谢谢,但我显然没有让自己清楚。我不想要打印任何东西。我想捕获价值数据$ a进一步处理闪亮 – pssguy

+0

编辑我的答案 –

+0

伟大的。理想情况下,它会看起来更干净与会议$输出$ aVal < - renderText({数据$ a})进程以外的clickFunc,但你的答案肯定有效 – pssguy