我正在使用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.)
帮助!
答案 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
现在应该可以作为常规数据框用于所有练习块了。