能否在Github Pages上托管交互式R Markdown文件?

23

正如标题所说,我想在Github Pages上创建交互式的R Markdown文件(即其中包含嵌入的Shiny应用程序)。在Github Pages上是否可以实现这一点?如果可以,我该怎么做?如果不行,最好的(免费)托管交互式RMD / Shiny页面的方法是什么?


RStudio提供shinyapps.io - Gregor Thomas
1
@Gregor 我知道,只是想知道是否有办法创建类似博客的帖子,并嵌入Shiny应用程序,而不必链接到单独的shinyapps.io页面。 - xyy
我认为在Github Pages上不允许使用服务器端技术。因此,除了链接到其他主机之外,我无法想象你如何实现这一点。 - Philip Parker
2
您可以在Github上运行嵌入了HTML小部件(highcharter、leaflet等)的RMarkdown文件,但不能运行高度定制的Shiny应用。只有在安装了RStudio服务器的服务器上才能运行Shiny应用。 - hvollmeier
3个回答

25

尽管在Github页面上无法托管完整的Shiny应用程序(实际上,正如@Gregor建议的那样,shinyapps.io对此很有用),但Shiny的开发人员一直在努力通过htmlwidgets使部分功能完全在客户端运行。

这里是一个在Github页面上运行的简单示例:

README.Rmd

## Example of displaying htmlwidgets on a Github pages site

```{r}
# Source: http://www.htmlwidgets.org/showcase_plotly.html
library(plotly)
p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) +
            geom_bar(position = "dodge")
ggplotly(p)
```

页面呈现的HTML

htmlwidgets演示的截图

(在线版本: Github pages htmlwidget演示)

对于更复杂的交互,包括在客户端完全通信的小部件之间交流,请查看Joe Cheng最近在UserR! 2016展示的crosstalk演示


4
如何将一个包含rmarkdown、knitr和interactive shiny的文档转换为可运行的Github页面?我只需要把RMD文件改成HTML文件吗? - theforestecologist

1
当您渲染一个rmd文件时,您也可以将其编织为HTML,并将该页面托管在GitHub页面上。

你如何将它编织到HTML中? - Emmanuel Goldstein

0
2023年,你可以使用shinylive包在Github页面上托管Shiny应用。
从Posit网站的文档页面上可以看到:

传统的Shiny部署方式涉及到一个独立的服务器和客户端:服务器运行Python和Shiny,客户端通过Web浏览器连接。每个客户端在使用应用程序时都保持着一个打开的websocket连接。

但是,

当使用Shinylive部署应用程序时,Python和Shiny在Web浏览器中运行:浏览器实际上是应用程序的客户端和服务器。有一个Web服务器用于提供文件,但它不运行Python或Shiny-它可以是一个“愚蠢”的静态Web服务器。

这意味着你可以通过GitHub页面托管Shiny应用。

一个高级工作流程示例

从RamiKrispin的优秀示例存储库中窃取的所有内容。
由于shinylive应用程序是无服务器的,您可以将应用程序部署到Github Pages上。首先,按照以下步骤创建您的应用程序:
shiny create myapp

这将创建一个应用程序文件 - app.py,其中包含默认的shinylive示例,位于myapp文件夹下。
.
└── myapp
    └── app.py

接下来,更新您的应用程序并使用shiny static命令构建网站。
shiny static myapp docs

我们将应用程序文件夹 myapp 映射到网站文件夹 docs(Github Pages 要求将网站名称设置为 docs)。这将添加以下文件夹:
.
├── docs
│   ├── edit
│   └── shinylive
│       ├── jquery.terminal
│       │   ├── bin
│       │   ├── css
│       │   └── js
│       ├── pyodide
│       │   └── fonts
│       ├── pyright
│       └── shiny_static
│           └── edit
└── myapp

你可以使用以下命令在本地测试你的应用程序:
python3 -m http.server --directory docs 8008

在浏览器中打开,使用http://localhost:8008/
注意:每次更改应用程序后,您都需要运行shiny static myapp docs来更新docs文件夹。
完成应用程序后,请提交并推送更改,然后在Github上打开您的存储库,转到Settings选项卡,并选择Pages选项(蓝色框)。

接下来,在“构建和部署”下选择“从分支部署”选项(绿色框),然后在分支选项中选择要部署的分支和“docs”文件夹(紫色框)。
几分钟后,网站将准备就绪,具有以下URL:
YOUR_GITHUB_USER_PROFILE.github.io/YOUR_REPO_NAME

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接