我在笔记本电脑上测试我的应用程序,然后将其部署到shinyapps服务器.在部署之前,我需要删除设置路径的语句,例如,
setwd('/Users/MrY/OneDrive/Data')
Run Code Online (Sandbox Code Playgroud)
有没有一种方法代码可以找出它是在本地运行还是在服务器上运行,所以它会像:
if (isLocal()) {
setwd('/Users/MrY/OneDrive/Data')
}
Run Code Online (Sandbox Code Playgroud)
一个简单的示例代码(如果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) {
})
Run Code Online (Sandbox Code Playgroud)
ui.R
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Click the button"),
sidebarPanel(
actionButton("goButton", "Go!")
),
mainPanel(
)
))
Run Code Online (Sandbox Code Playgroud)
在Shiny中执行此操作的标准方法是:Sys.getenv('SHINY_PORT').你可以这样写:
is_local <- Sys.getenv('SHINY_PORT') == ""
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是正确的方法,但你可以看看主机使用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(...)
}
})
}
))
Run Code Online (Sandbox Code Playgroud)
这种东西应该有用,但我不能保证它是否是最好的解决方案