我在笔记本电脑上测试我的应用,然后将其部署到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(
)
))
答案 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"