拿出从sprintf
命令deparse
和substitute
,和周围的值加单引号要匹配在SQL语句中要生成
摆脱get
的功能,因为你不是试图“获取”一个对象
例如....
library(shiny)
library(networkD3)
library(DT)
library(sqldf)
df <- read.csv(header = T, text = '
source,name,age,hair
dad,Jon X,18,brown
dad,Jon Y,22,blonde
')
funct <-
function (n) {
isp <- sprintf("Select df.age From df Where df.name='%s';", n)
isd <- sqldf::sqldf(isp)
return(isd)
}
ui <- shinyUI(fluidPage(
fluidRow(
column(4, simpleNetworkOutput("simple")),
column(4, DT::dataTableOutput("table"))
)
))
server <- shinyServer(function(input, output, session) {
session$onSessionEnded(stopApp)
output$simple <- renderSimpleNetwork({
sn<-simpleNetwork(df)
sn$x$options$clickAction = 'Shiny.onInputChange("id",d.name)'
sn
})
output$table <- DT::renderDataTable(DT::datatable(funct(input$id)))
})
shinyApp(ui = ui, server = server)
但是,如果你想要的是显示给定选择相关的值,我强烈建议大幅降低了复杂性,这样的事情
library(shiny)
library(networkD3)
df <- read.csv(header = T, text = '
source,name,age,hair
dad,Jon X,18,brown
dad,Jon Y,22,blonde
')
ui <- shinyUI(fluidPage(
fluidRow(
column(4, simpleNetworkOutput("simple")),
column(4, textOutput("text"))
)
))
server <- shinyServer(function(input, output, session) {
session$onSessionEnded(stopApp)
output$simple <- renderSimpleNetwork({
sn <- simpleNetwork(df)
sn$x$options$clickAction <- 'Shiny.onInputChange("id", d.name)'
sn
})
output$text <- renderPrint({ df$age[df$name == input$id] })
})
shinyApp(ui = ui, server = server)
什么是'df','funct' ?请添加'library(DT)' – HubertL
@HubertL库(DT)已包含在内。 df是数据帧。函数是我想要传递节点值的函数。功能(n){ isp <-sprintf(“Select df.'age' From df Where df.name =%s;”,deparse(substitute(n))) isd < - sqldf(isp ) return(isd) } – Poppin
[将networkd3中的节点信息提取为光泽中的反应变量]的可能副本(https://stackoverflow.com/questions/45217609/extracting-node-information-from-networkd3-to- a-reactive-variable-in-shiny) –