我想做什么:
我想在以下过程中使用r-exams
:
exams2pdf(..)
eval_nops(...)
)对答案进行评分我的问题:
调用函数eval_nops()
是在r-exams
中手动评分问题的首选方法吗?
如果不是,则首选哪种方式?
我尝试过的事情:
我知道exam2nops()
函数,并且它会返回一个.RDS
文件,其中存储了正确的答案。因此,我基本上有了我需要的东西。但是,我发现该过程并不是很简单,因为正确的答案被深深地埋在RDS文件中。
答案 0 :(得分:5)
您是正确的,除了Moodle或Canvas等标准学习管理系统(LMS)之外,没有其他可用于管理考试/评分的系统。R/ exams确实为评分提供了一些基础exams_eval()
。这可以通过Google表单等工具进行补充。下面我以关于exams_eval()
的“事实”开始,尽管这有点技术性。但随后我也提供了有关此类方法的一些评论。
exams_eval()
让我们考虑一个具体的例子
eval <- exams_eval(partial = TRUE, negative = FALSE, rule = "false2")
表示您希望部分选择功劳能够获得部分学分,但每个项目的总分不得为负。正确打勾的框产生1 /#正确点,而错误打勾的框1 /#false。唯一的例外是,只有一个错误的项目(然后会取消所有所有分),然后使用1/2。
结果对象eval
是具有输入参数(partial
,negative
,rule
)和三个功能checkanswer()
,{{1}的列表},pointvec()
。想象一下您有正确的答案模式
pointsum()
正确和错误打勾的相关点为:
cor <- "10100"
因此,对于以下答案模式,您将得到:
eval$pointvec(cor)
## pos neg
## 0.5000000 -0.3333333
仍然需要将后者乘以分配给该练习的总分。对于数字答案,您只能获得100%或0%:
ans <- "11100"
eval$checkanswer(cor, ans)
## [1] 1 -1 1 0 0
eval$pointsum(cor, ans)
## [1] 0.6666667
类似地,字符串答案是正确还是错误:
eval$pointsum(1.23, 1.25, tolerance = 0.05)
## [1] 1
eval$pointsum(1.23, 1.25, tolerance = 0.01)
## [1] 0
要获取给定练习的相关信息,您可以从所有eval$pointsum("foo", "foo")
## [1] 1
eval$pointsum("foo", "bar")
## [1] 0
接口返回的嵌套列表中访问元信息:
exams2xyz()
例如,您可以为第x <- exams2xyz(...)
个练习的第metainfo
个随机复制提取i
,如下:
j
其中包含正确的x[[i]][[j]]$metainfo
,$solution
以及$type
等。当然,这有点长且不方便交互键入,但应足够容易以编程方式循环浏览。例如,$tolerance
就是基于nops_eval()
文件的,该文件完全包含.rds
中的信息。
在这里,我通常的建议是尝试利用您大学的服务(如果有的话)。是的,带宽/稳定性等可能存在问题。但是,如果您正在运行自己的系统,则可以完全相同(在此完成)。具体来说,可以在此处找到有关Moodle与PDF考试的讨论:
如果我要在LMS之外进行考试,我会使用HTML,而不使用PDF。与HTML相比,在HTML中嵌入其他信息(数据,链接等)要容易得多。此外,可以在移动设备上更轻松地查看HTML。
要收集答案,某些R /考试用户使用Google表格,请参见:
https://R-Forge.R-project.org/forum/forum.php?thread_id=34076&forum_id=4377&group_id=1337。其他人对此感兴趣使用x
或learnr
:
http://www.R-exams.org/general/distancelearning/#going-forward。
但是,关于隐私,如果其中任何一项比使用大学的LMS更好,我将感到非常惊讶。