我使用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个文件?
答案 0 :(得分:0)
将c驱动器粘贴到直接,并直接读入img时,您将app / markdown发送到本地驱动器。您需要使用项目的相对路径。我会建议像:
direct <- "./"
使用相对路径,而不是绝对路径。
如果.png与闪亮对象位于同一文件夹中,那么您可以完全跳过该步骤。只需调用文件名和格式,然后保留即可。
此外,请检查您是否使用“。您的语法突出显示表明您的代码无法正常运行,因为它认为您的某些函数和变量是字符串,因为您错误地放置了read.png()
周围的引号。这可能是只是复制并粘贴拼写错误。
总之,通过grid.raster("./pic.PNG")
调用图像,并了解工作目录和相对路径的工作方式。
如果您不确切知道如何“设置”您的工作目录:
执行此操作时,它会自动正确设置您的工作目录。你似乎做的方式是不正确的,你只是提供一个“路径”。如果由于某种原因你不想使用某个项目(我不能想到这样的情况),那么你总是可以使用setwd()
,但我相信这需要用于每届会议。真正的项目没有这个要求。
这将允许您正确部署您的应用程序,因为它会在shinyapps.io初始化时将工作目录更新为主机计算机上的工作目录。
最后,使用正确的相对语法"./path/to/my.file"
来引用您的所有资产,图片,数据等,应该按照问题中的说明更正您的问题。