在本地服务器上的应用程序中保存和加载工作区

时间:2019-02-09 09:14:13

标签: r shiny

我有一个运行在本地服务器上的闪亮应用程序,可通过“ ip-adres:port”通过网络浏览器进行访问。我在任务计划程序中安排了一个任务,该任务执行以下代码(路径:“ C://Users//Administrator//Documents//run.R”

<div>http://<span id='mydiv'>example0.com</span></div>

<select onchange='changeText(this.value)'>
  <option>example1.com</option>
  <option>example2.com</option>
  <option>example3.com</option>
  <option>example4.com</option>
</select>

由于我能够通过'ip:port'访问该应用程序,因此任务执行得很好。

require(shiny) folder_address = "C://Users//Administrator//Documents//App//app.R" x <- system("ipconfig", intern = TRUE) z <- x[grep("IPv4", x)] ip <- gsub(".*? ([[:digit:]])", "\\1", z) runApp(folder_address, launch.browser = FALSE, port = 1234, host = ip) 的开头,我手动加载了工作空间:app.R。 当我不手动加载它时,该应用程序将无法识别该应用程序的变量/数据框。

我的问题如下:

  • 该任务计划于每天早晨运行。当我们仅运行一次任务时,可能会发生服务器更新或重启的情况。这样,该应用程序将不再运行。
  • 在应用中进行了修改(即变量和数据框已更改)后的第二天任务正在运行时,它将再次加载工作空间。
  • 此工作区不包含已编辑的数据,因为工作区在编辑后不会自动保存。
  • 当我在触发数据编辑的事件(例如按钮)上手动将load("C://Users//Administrator//Documents//App//.RData")放在save.image(".RData")中时,它保存了app.R的工作区,剩下变量run.Rxzip

如何保存应用程序的工作空间,而不是folder_address的工作空间?一种解决方法是让任务每天运行并打开它。但是,一旦停止了更新,我们将不得不手动重新运行该任务。

1 个答案:

答案 0 :(得分:1)

有几种获取所需结果的方法。

persisting data的两种最佳方法是使用数据库或将对象存储在Amazon S3之类的服务中。

如果必须保存R环境,是否可以使您的应用在每次编辑后都进行保存,以使它确实被打断了,那么第二天早上它会在同一位置重新开始吗?

或者,您是否可以重构应用程序以保存

chargeDisplay.Show(chargePercentage);
个文件(r个文件)并在应用程序启动时读取它们,并在编辑后保存每个文件(这比保存整个R环境要快得多) )