我使用以下内容从“capital.Rmd”示例创建 D2L 考试(我将问题转换为schoice
)
exams2blackboard("capitals.Rmd", n =3, name = "testquiz" )
上传 testquiz.zip 文件后,我注意到必须在 D2L 平台上手动选择正确答案。
我想知道是否有解决方法。
非常感谢,
乌姆特
我使用以下内容从“capital.Rmd”示例创建 D2L 考试(我将问题转换为schoice
)
exams2blackboard("capitals.Rmd", n =3, name = "testquiz" )
上传 testquiz.zip 文件后,我注意到必须在 D2L 平台上手动选择正确答案。
我想知道是否有解决方法。
非常感谢,
乌姆特
如果您希望选择正确的解决方案,请不要使用问题库或测验本身的导入选项。使用课程管理选项卡下的导入/导出/复制组件。
如果您通过以下步骤导入问题,BrightSpace 会正确选择正确的解决方案。它有点长,但似乎正确选择了解决方案。
在课程的课程管理选项卡下,转到
'导入/导出/复制组件' -> '导入组件' -> 开始 -> (拖放 ZIP 文件)
点击“高级选项...”</p>
对于大文件,此步骤将需要几分钟;如果您不点击高级选项,则导入会自动将问题导入“问题库”,并会生成一个包含导入问题的测验;你不想要这个。
-> 继续 -> 继续 -> 此时从“选择要导入的组件”部分中选择“问题库”
我不会选择“测验”,因为它会自动创建测验并提供给学生。它具有使所有问题可用的不幸副作用,这意味着各种动态问题的所有版本;这不是我们想要的。
-> 继续 -> 继续。对于大型导入,此阶段需要几分钟时间。
现在问题在问题库中可用,可用于生成新的测验。每个问题都已经选择了正确的答案。这适用于“选择”和“选择”版本的问题。目前,地块没有导入,但仍在试图找出原因。
这个问题对我来说是新的。在 Brightspace/D2L 的早期版本中,单选和多选练习的导入exams2blackboard()
效果很好。考虑到 CRAN 的当前版本和 R-Forge 的开发版本都不适合您,D2L 可能同时发生了变化。
D2L 还支持其他导入格式,我们确实尝试过其中的一些。请参阅 R-Forge 上的 R/exams 论坛中的以下讨论:
https://R-Forge.R-project.org/forum/forum.php?thread_id=33404&forum_id=4377&group_id=1337
https://R-Forge.R-project.org/forum/forum.php?thread_id=33657&forum_id=4377&group_id=1337
值得注意的是,我们尝试使用 D2L 内部似乎采用的基于 XML 的 QTI 2.1 格式。但是,D2L 显然使用了 QTI 2.1 的特定定制风格。应该可以对其进行逆向工程并exams2qti21()
相应地改进,但到目前为止(据我所知)没有人为此投入时间和精力。
对于简单的单选/多选问题,也可以使用基于 CSV 的交换格式。我已经整理了一个非常基本的exams2d2l()
功能,该功能已发布在上面的线程中,我也将其包括在下面。它可以为单个练习设置 CSV 文件,就像capitals.Rmd
您在上面使用的练习一样。对于像这样的纯文本练习,它似乎效果很好,但不适用于更复杂的元素(图形、代码、数学等)。
exams2d2l <- function(file, dir = ".", ## n = 1L, nsamp = NULL disabled for now
name = NULL, quiet = TRUE, edir = NULL, tdir = NULL, sdir = NULL, verbose = FALSE,
resolution = 100, width = 4, height = 4, svg = FALSE,
encoding = "", converter = NULL, ...)
{
## for Rnw exercises use "ttm" converter otherwise "pandoc" converter
if(any(tolower(tools::file_ext(unlist(file))) == "rmd")) {
if(is.null(converter)) converter <- "pandoc"
} else {
if(is.null(converter)) converter <- "ttm"
}
## output directory or display on the fly
## output name processing
if(is.null(name)) name <- tools::file_path_sans_ext(basename(file))
## set up .html transformer and writer function
htmltransform <- make_exercise_transform_html(converter = converter, ...)
## create exam with HTML text
rval <- xexams(file,
driver = list(sweave = list(quiet = quiet, pdf = FALSE, png = !svg, svg = svg,
resolution = resolution, width = width, height = height, encoding = encoding),
read = NULL, transform = htmltransform, write = NULL),
dir = dir, edir = edir, tdir = tdir, sdir = sdir, verbose = verbose)
## currently: only a single exercise
rval <- rval[[1L]][[1L]]
## put together CSV
cleanup <- function(x) gsub('"', '""', paste(x, collapse = "\n"), fixed = TRUE)
rval <- c(
'NewQuestion,MC,,,',
sprintf('ID,"%s",,,', cleanup(rval$metainfo$file)),
sprintf('Title,"%s",,,', cleanup(rval$metainfo$name)),
sprintf('QuestionText,"%s",,,', cleanup(rval$question)),
sprintf('Points,%s,,,', if(is.null(rval$metainfo$points)) 1 else rval$metainfo$points),
'Difficulty,1,,,',
'Image,,,,',
paste0('Option,', ifelse(rval$metainfo$solution, 100, 0), ',"', cleanup(rval$questionlist), '",,"', cleanup(rval$solutionlist), '"'),
'Hint,,,,',
sprintf('Feedback,"%s",,,', cleanup(rval$solution))
)
writeLines(rval, file.path(dir, paste0(name, ".csv")))
invisible(rval)
}