使用reactFileReader的Shiny_prerendered文档

时间:2018-11-05 00:35:42

标签: r shiny

我正在使用learnr程序包来创建一些练习题。因此,情况如下:我在Googlesheet中有一个csv文件,我想使用reactiveFileReader来连续导入。我的代码与此RAML一起位于RMarkdown中

---
title: "Tutorial"
output: 
  learnr::tutorial:
    progressive: true
    allow_skip: true
runtime: shiny_prerendered
---

问题:如何在此RMarkdown中使用reactiveFileReader

我尝试将reactiveFileReader分配给一个对象,但出现此错误:

Error in .getReactiveEnvironment()$currentContext() :
Operation not allowed without an active reactive context. (You tried to do something that can only be done from inside a reactive expression or observer.)

帮助!

1 个答案:

答案 0 :(得分:0)

如果计划是让学生在学习练习中使用此数据,则尝试将其作为反应式加载不是一个好主意,因为他们将无法将其用作常规数据框。

如果数据在Google工作表中,我建议每次加载教程时都使用googlesheets包将其作为静态数据集导入。

首先,要获取身份验证令牌,您的应用可以在部署时远程使用,以应用目录作为工作目录运行此代码

library(googlesheets)

shiny_token <- gs_auth() # authenticate w/ your desired Google identity here
saveRDS(shiny_token, "shiny_app_token.rds") # save token to app dir

然后在学习者教程的代码中使用您的身份验证令牌和Google工作表的工作表键(在工作表的网址中查找)将数据加载到数据中

```{r setup, include=FALSE}
library(learnr)
library(googlesheets)

googlesheets::gs_auth(token = "shiny_app_token.rds")
sheet_key <- "your_sheet_key_here"
learnr_data <- googlesheets::gs_key(sheet_key) %>% gs_read_csv()
```

learnr_data现在应该可以作为常规数据框用于所有练习块了。