如何在shinyApps.io上为rmarkdown / knitr交互式文档分配工作目录?

时间:2017-04-20 20:29:41

标签: r rstudio knitr r-markdown shiny

我使用knitr / r markdwon有一个功能齐全的交互式闪亮文档。

但是,当我尝试将其发布(部署)到shinyApps.io时,我收到一条错误,说我尝试将.PNG文件合并到文档中(使用png包中的readPNG)无法开。

我知道问题与工作目录有关。

在我的原始代码中,我为我的文件夹分配了一个工作目录(即" C:/ Users / NAME / documents /...."它包含我的.rmd文件和我的.png文件但是,显然我的文件夹并不存在于shinyapps.io。

所以如何设置我的工作目录以通过我在shinyapps.io上的文档打开.png文件?

我无法找到明确地完成此过程的任何地方。请简单/基本上帮我解释一下。

示例:

假设我在" C:/ Users / NAME / documents / Shiny"中有一个文件夹。包含2个文件:" shiny.rmd"和" pic.png"。我想" pic.png"要在我的shiny.rmd文档中呈现。

目前我有:

---
title: "TroubleShoot"
output:  html_document
runtime: shiny
---

```{r ,echo=FALSE,eval=TRUE}
library(png)
library(grid)
direct <- "C:/Users/NAME/documents/Shiny/"
img <- readPNG(paste0(direct,"pic.PNG"))
grid.raster(img)
```

如何重写我的代码,使其适用于shinyApps.io?

在部署之前,是否需要以特定方式创建和命名文件夹以放置我的2个文件?

1 个答案:

答案 0 :(得分:0)

将c驱动器粘贴到直接,并直接读入img时,您将app / markdown发送到本地驱动器。您需要使用项目的相对路径。我会建议像:

direct <- "./"

使用相对路径,而不是绝对路径。

如果.png与闪亮对象位于同一文件夹中,那么您可以完全跳过该步骤。只需调用文件名和格式,然后保留即可。

此外,请检查您是否使用“。您的语法突出显示表明您的代码无法正常运行,因为它认为您的某些函数和变量是字符串,因为您错误地放置了read.png()周围的引号。这可能是只是复制并粘贴拼写错误。

总之,通过grid.raster("./pic.PNG")调用图像,并了解工作目录和相对路径的工作方式。

如果您不确切知道如何“设置”您的工作目录:

In rStudio to correct and easiest approach is to make a 'New Project' for every New Project. You can do this as the first step in your project, or you can add a project file to an existing directory.

执行此操作时,它会自动正确设置您的工作目录。你似乎做的方式是不正确的,你只是提供一个“路径”。如果由于某种原因你不想使用某个项目(我不能想到这样的情况),那么你总是可以使用setwd(),但我相信这需要用于每届会议。真正的项目没有这个要求。

这将允许您正确部署您的应用程序,因为它会在shinyapps.io初始化时将工作目录更新为主机计算机上的工作目录。

最后,使用正确的相对语法"./path/to/my.file"来引用您的所有资产,图片,数据等,应该按照问题中的说明更正您的问题。