拿出從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) –