在 R shiny 中访问登录名

access logged in name in R shiny

我想在 R shiny 中访问用户名(a.k.a。我登录 windows 机器时输入的用户名)。

这是我的ui.r:

shinyUI(pageWithSidebar(


  sidebarPanel(
    #sliderInput("n", "Number of plots", value=1, min=1, max=5)
  ),

  mainPanel(
    verbatimTextOutput("user")
  )
))

这是我的 server.r:

shinyServer(function(input, output,session) {


  output$user <- renderText({
    paste(sep = "",
          "protocol: ", session$clientData$url_protocol, "\n",
          "hostname: ", session$clientData$url_hostname, "\n",
          "pathname: ", session$clientData$url_pathname, "\n",
          "port: ",     session$clientData$url_port,     "\n",
          "user: ",   session$user,   "\n"
    )
  })
  })#end of server

你可以看到我正在尝试使用 session$user 但是当我 运行 我在页面底部看到这个

protocol: http:
hostname: 127.0.0.1
pathname: /
port: 5616
user: 

所以用户是空白的。

你知道我如何访问我用来登录 Windows 机器的登录名吗?

目前还不清楚你的 shiny 怎么样 运行 以及你指的是哪个用户。但是,您可以使用以下方式访问 windows 中的用户名:

Sys.getenv()["USERNAME"]

@user3022875 Sys.getenv on USERNAME 以上将适用于 Windows,但不是所有机器。您可能希望及时在 shinyapps.io 或其他服务器上托管您的应用程序。

我写这个脚本是为了帮助我,因为我的一个用户在 Linux 机器上。我还从帮助文件中注意到 Unix 机器可能需要 LOGNAME.

GetUserName <- function() {
  # Returns user name of computer with twist for Unix
  # Args
  #   none
  # Returns
  #  string of user login name

  x <- Sys.info()[["user"]]

  # if blank try other methods
  if (is.null(x) | x == "") {
    # On windows machines
    Sys.getenv("USERNAME")  
  } else {
    # from helpfiles for Unix
    Sys.getenv("LOGNAME")  
  }

  # Could get something but it is unknown error
  if (identical(x, "unknown")) {
    warning("unknown returned")
  }

  return(x)
}

您可以将此功能添加到您的 server.R 或 global.R。希望这有帮助。

您可以试试:

Sys.getenv()["USERNAME"][[1]]

Sys.getenv("USERNAME")

这样肯定会输出Windows登录名。如果你想把它包装成一个函数,你可以使用以下内容:

user_name <- function() {
return(Sys.getenv()["USERNAME"][[1]])
### or return(Sys.getenv("USERNAME"))
}