在 knitr 文档中嵌入 Shiny 应用程序

uma*_*ani 5 r shiny

我有一个闪亮的应用程序,它有一个 ui.R、server.R 和 global.R。app 目录(名称 = 破折号)包含数据集所在的文件夹“data”。此外,此应用程序文件夹位于项目的工作目录中。在 global.RI 中读取数据为:

dash <- read.table("data/ntraj1acc.txt", sep=",", header=T)
Run Code Online (Sandbox Code Playgroud)

这个应用程序运行良好。现在,我试图将它嵌入到 ioslides 演示文稿中,否则效果很好。rmarkdown 网站外部应用程序部分中的示例在我的演示中也很完美。但是当我替换system.file我的应用程序的路径时,我收到错误:

No Shiny application exists at the path ""
Run Code Online (Sandbox Code Playgroud)

这是我替换路径的方法:

shinyAppDir(
  system.file("dash", package="shiny"),
  options=list(
    width="100%", height=700
  )
)
Run Code Online (Sandbox Code Playgroud)

错误发生后,我尝试了以下操作:

shinyAppDir(
  "C:/Users/durraniu/Documents/Trajectory-one/dash",
  options=list(
    width="100%", height=700
  )
)
Run Code Online (Sandbox Code Playgroud)

但是后来我遇到了一个新错误:

object 'dash' not found
Run Code Online (Sandbox Code Playgroud)

这意味着它没有解析 global.R。

我该如何解决这个问题?

Ant*_*zuk 5

我使用以下 rmarkdown 块成功地将应用程序嵌入到交互式闪亮文档中:

```
shinyAppDir("D:/Documents/OneDrive/Notes/R-Explore/shiny/01-ages/",
  options=list(
    width="100%", height=550
  )
) 
```
Run Code Online (Sandbox Code Playgroud)

所有3个文件:ui.R、server.R和test.Rmd都在上面的绝对路径


Joe*_*eng 4

system.file("dash", package="shiny")肯定行不通,它正在闪亮的包本身中寻找名为“dash”的文件夹,而该文件夹显然不存在。

此外,我们在 RMarkdown 中还有一个限制,即它不会为嵌入式 Shiny 应用程序调用 global.R,抱歉这一事实似乎并未纳入文档中。https://github.com/rstudio/rmarkdown/issues/211

最后,与常规的 Shiny 应用程序不同,在 RMarkdown 文档的嵌入式 Shiny 应用程序中,您不能假设来自 server.R 的相对路径将正确解析;这是因为许多应用程序可以在单个会话中运行,包括 RMarkdown 文档本身(这也是一个 Shiny 应用程序),因此没有办法让所有应用程序都满意。

目前,我建议您直接在 RMarkdown 文档中加载数据,并从子应用程序中假设数据已经加载 - 我相信这有效,如果我错了,请纠正我。