如何知道应用程序是在本地还是在服务器上运行? (R Shiny)

时间:2015-07-15 06:39:37

标签: r shiny

我在笔记本电脑上测试我的应用,然后将其部署到shinyapps服务器。 在部署之前,我需要删除设置路径的语句,例如

setwd('/Users/MrY/OneDrive/Data')

代码是否可以找到它是在本地运行还是在服务器上运行的方式,以便它可以像:

if (isLocal()) {
       setwd('/Users/MrY/OneDrive/Data')
}

一个简单的示例代码(如果未删除setwd,它将在服务器上失败):

server.R

library(shiny)

setwd('/Users/Yuji/OneDrive/Data/TownState')  

data = 'data1.csv'  # to test, using an empty .csv file

shinyServer(function(input, output) {


}) 

ui.R

library(shiny)

shinyUI(pageWithSidebar(
    headerPanel("Click the button"),

    sidebarPanel(
        actionButton("goButton", "Go!")
    ),
    mainPanel(

    )
))

2 个答案:

答案 0 :(得分:5)

我不知道这是否正确,但您可以使用session$clientData$url_hostname查看主机。当你在本地运行它时,除非你专门更改主机,否则它将是127.0.0.1并且我猜测shinyapps它会像shinyapps.io那样。示例代码

runApp(shinyApp(
  ui = fluidPage(
  ),
  server = function(input, output, session) {
    observe({
      if (session$clientData$url_hostname == "127.0.0.1") {
        setwd(...)
      }
    })
  }
))

这种东西应该有用,但我不能保证它是否是最好的解决方案

答案 1 :(得分:1)

您可以检索主机名并查询该主机名。计算机应具有不同的主机名。

    library(R.utils)
    hname <- System$getHostname()

产量

           nodename 
"mikes-air-3.wisedom.local"