将参数传递给闪亮的R中的函数 [英] Passing argument to a function in shiny R

查看:79
本文介绍了将参数传递给闪亮的R中的函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将简单网络的节点值作为参数传递给Shiny R中的函数.但是,出现此错误:

I'm trying to pass the node value of a simple network as an argument to a function in Shiny R. However, I'm getting this error:

rsqlite_send_query中的错误:没有这样的列:input $ id

Error in rsqlite_send_query: no such column: input$id

任何人都可以帮助解决此问题吗?谢谢.

Can anyone help with this issue? Thanks.

library(shiny)
library(networkD3)
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(get(funct(input$id))))

})

shinyApp(ui = ui, server = server) 

推荐答案

  1. sprintf命令中取出deparsesubstitute,并在要生成的SQL语句中要匹配的值周围添加单引号

  1. take out the deparse and substitute from your sprintf command, and add single quotes around the value you want to match in the SQL statement you're generating

放弃get函数,因为您不是要获取"对象

get rid of the get function because you're not trying to "get" an object

例如....

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)

但是,如果您只想显示与给定选择相关的值,我强烈建议您将复杂性大幅度降低到这样的水平

however, if all you want is to display a value associated with a given selection, I highly suggest drastically reducing the complexity to something like this

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)

这篇关于将参数传递给闪亮的R中的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆