我正试图使用R/考试与一个练习,读取本地数据集。当我以交互方式运行时,练习中的代码工作得很好,但当我在exams2moodle()
中运行时,它就失败了。当我尝试在练习中source()
一个R脚本时,也会出现同样的问题。
下面是一个简化的人工例子。
library("exams")
exams2moodle("mysum.Rmd")
练习文件mysum.Rmd
为:
```{r, include=FALSE}
i <- sample(1:3, 1)
d <- read.csv("mydata.csv")
s <- d$x[i] + d$y[i]
```
Question
========
What is the sum of $`r i`$ + $`r i+1`$?
Meta-information
================
exname: mysum
extype: num
exsolution: `r s`
数据文件mydata.csv
为:
x,y
1,5
8,3
4,4
代码在本地运行良好,因为数据文件mydata.csv
在本地工作目录中。但是,在exams2moodle()
(以及所有其他exams2xyz()
接口)中使用了一个不同的临时目录,以免用户的工作空间被文件弄乱。
因此,当您想要使用其他文件时,您需要指示它们的绝对路径,或者需要确保它们被复制到相同的临时目录中。对于后者,有一个方便的函数include_supplement()
,它复制文件,默认情况下从练习所在的同一目录中获取它们。在你的情况下,你可以添加
include_supplement("mydata.csv")
在mysum.Rmd
练习的第一个R代码块的开头(在read.csv()
应用之前)。
我也遇到了同样的问题。您也可以通过在Rmd
中指定数据文件的完整路径来解决问题。