如何使用Shiny Pro访问Shiny中的session $ user

时间:2015-03-24 17:50:43

标签: r shiny shiny-server

我有一个简单的闪亮应用程序,我正在测试SHINY专业版,我想访问会话$ user,就像文档建议的那样:

http://rstudio.github.io/shiny-server/latest/#flat-file-authentication。请参阅4.1节,其中显示了此代码:

shinyServer(function(input, output, session) {
  output$username <- reactive({
    session$user
  })

该代码有效但我需要通过GetUser()函数访问ui.r文件中的session $ user

这是我的ui.r文件:

library(shiny)
shinyUI(fluidPage(
  textOutput("HeaderTime"),
  sidebarPanel(
    selectInput("t",   "t:",  as.character(GetUser()), selected = as.character(GetUser())), width = 2
  ),
  mainPanel(
    tabsetPanel(
      tabPanel("test",
               dataTableOutput("Table"), 
               plotOutput("Plot"),
#                verbatimTextOutput("Txt"),
               width = 12
      )
    )
  )
))

您可以在selectInput中看到GetUser()函数。我已将GetUser()放在我的server.R文件中:

shinyServer(function(input, output, session) {

  GetUser<-reactive({
    return(session$user)
  })

output$Plot<-renderPlot({

  hist(rnorm(1000))
})


output$Table<- renderDataTable({ 
  data.frame(a=c(1,2,3,4),b = c("TEst","test","test","test"))
})

})

当我运行此代码时,我收到错误:

Error in GetUser() : argument "session" is missing, with no default

知道如何让ui.r访问server.r文件中的GetUser(),以便可以在ui中使用session $ user吗?

以下是运行项目的代码:

library(rJava)
library(shiny)
install.packages("shiny")
runApp("C://me/pathtoproject")

谢谢。

1 个答案:

答案 0 :(得分:0)

你得到的错误确实解决了问题(尽管是以一种神秘的方式)。

当您在ui中呼叫GetUser功能时,&#34;会话&#34;参数是未知的(即它只是&#34;已知&#34;服务器)。

我建议您使用updateSelectInput(或renderUI,如果您愿意)并从服务器端发送session$user值。

像(未经测试)的东西:

 server = function(session,input, output) {

  GetUser<-reactive({
    return(session$user)
  })

 updateSelectInput(session, "t", "t:",  as.character(GetUser()),selected = as.character(GetUser()))