r-exam关于 2 个单独的 xxx.Rmd 文件上的相同数据的问题



使用 R 考试,我正在开发一个包含多个问题的 pdf 考试(因此有几个 Rmd 文件(,但问题是相互关联的,并且将使用在第一个问题文件中创建的数据集。问题不适合填空填空格式。

有没有办法编写练习,以便第二个练习可以访问第一个练习生成的数据?

最简单的解决方案是在不同的练习中使用共享环境,在最简单的情况下是.GlobalEnv。然后你可以简单地做

exams2pdf(c("ex1.Rmd", "ex2.Rmd"), envir = .GlobalEnv)

然后,两个练习都将在全局环境中创建其变量,并可以从那里重用现有变量。除了.GlobalEnv,您还可以创建myenv <- new.env()并使用envir = myenv

对于 Rnw(与 Rmd 相反(练习,没有必要设置此选项Sweave()因为无论如何,Rnw 练习始终在当前环境中处理。

请注意,这些方法仅适用于那些exams2xyz()接口,其中每个练习的第 n 次随机抽取可以确保最终在 n 次考试中一起完成。PDF 输出是这种情况,但许多学习管理系统输出(Moodle、Canvas 等(则不是这种情况。请参阅:使用 exams2moodle(( 跨练习共享随机 CSV 数据集

是否可以将需要磁盘的数据保存在一个Rmd文件中

```{r, echo=FALSE}
saveRDS(df, "my_stored_data.rds")
```

然后将其加载到另一个中

```{r, echo=FALSE}
readRDS(df, "my_stored_data.rds")
```

另一种选择是从R脚本中编织Rmd文件,然后从此R脚本中编织它们。如果这样做,Rmd文件将使用R脚本(!( 的环境,而不是创建自己的环境。因此,您可以使用相同的对象(因此当然,让一个Rmd脚本存储数据,而另一个将其用作输入。

在此线程中:使用 knitr 通过循环创建部分 我有一篇关于这样做的帖子。基本上是这样的:

第一个 Rmd 文件:

---
title: "Script 1"
output: html_document
---
```{r setup, include=FALSE}
a_data_frame_created_in_script_1 <- mtcars
```

另存为rmd_test.Rmd

第二个:

---
title: "Script 1"
output: html_document
---
```{r setup}
a_data_frame_created_in_script_1
```

另存为rmd_test_2.Rmd

然后你有一个 R 脚本来执行此操作:

rmarkdown::render("rmd_test.Rmd", output_file = "rmd_test.html")
rmarkdown::render("rmd_test_2.Rmd", output_file = "rmd_test_2.html")

最新更新