用数据放大器的签名器教R

6月22日,二千零一十八
通过

(本文首次发表于 DataCamp社区-R编程,并对 188bet appR博主

自我们开设第一个课程以来,即时和个性化的反馈一直是DataCamp学习体验的核心。如果学生提交的代码包含错误,他们被告知在哪里犯了错误,以及他们如何解决这个问题。你可以在我们的免费介绍R课程.下面的截图来自我们的中级R课程.

要检查提交并生成反馈,每一个关于数据放大器的练习都有一个所谓的提交正确性测试,或SCT。

SCT是一个自定义测试的脚本,用于评估学生提交的代码以及他们用代码创建的输出和变量。对于我们在数据放大器上教授的每种语言,我们已经构建了一个相应的开源软件包,以便轻松验证学生提交的所有这些元素。对于R练习,这个包称为testwhat。这些年来,我们添加了很多功能:

  • 检查变量分配
  • 检查函数调用和函数调用结果
  • 检查语句,对于循环,而while循环
  • 检查函数定义
  • 检查是否装载了正确的包裹
  • 检查学生生成的输出
  • 检查ggplot和ggvis plotting调用

当这些检查功能发现错误时,他们会自动生成一条有意义的反馈信息,将学生指向他们的错误。您还可以指定自定义反馈消息来覆盖这些自动生成的消息。

历史上,测试与我们在数据中心服务器上执行R代码的专有后端紧密相连的内容。尽管testWhat一直是开源的,如果没有这个定制的后端和testhwhat,它将无法很好地工作,因为它只能在datacamp上下文中使用。今天,然而,测试什么可以独立使用,也支持其他用例。你可以利用测试提供的一切来测试学生提交的材料,即使你的教学方式与数据放大器的教学方式非常不同。您可以从github安装包:

库(远程)devtools工作正常,可以安装Github(“datacamp/testWhat”)。

作为一个快速演示,假设您要求学生创建一个变量X等于5。理想解决方案的字符串版本如下:

解决方案代码<--X<-5'

现在假设学生提交了一个脚本,X错误地设置为两个值的向量,可编码如下:

学生代码<--x<-c(4,5)

测试调用函数的功能StUpUpSt[()它在不同的环境中执行学生提交和解决方案脚本,并捕获学生代码生成的输出和错误。所有这些信息都存储在运动状态您可以使用()

库(testWhat)设置状态(stu代码=学生代码,sol_code=solution_code)ex()。
第七章
        

        

这个练习状态可以传递给广泛的检查函数,这些函数测试管道语法的哪些特性来自马格利特.检查学生是否定义了变量X,你可以使用校验对象()

ex()%>%检查对象(“x”)
第七章
        

        

这个代码运行良好,因为学生实际上定义了一个变量X.继续并检查学生是否定义了变量X 正确地,你可以使用校验-等式()

ex()%>%check_object('x')%>%check_equal())
##检查时出错(等于(student-obj,解决方案Obj.EQI条件):变量“x”的内容不正确。它的长度是2,它的长度应该是1。

这个出错了。校验-等式()检测到X在学生环境中(向量)与X在解决方案环境中(单个数字)。请注意,错误消息如何包含描述此错误的可读消息。

上面的例子是交互式的:您设置了一个状态,然后继续输入检查函数链。在更高的层次上,你可以使用运行_直到_fail())环绕检查代码。这将运行您的测试电池,直到失败:

库(testWhat)设置状态(stu code='x<-4',sol_code='x<-5')res<-run_until_fail(ex()%>%check_object('x')%>%check_equal())res$正确
α〔1〕假
RES消息
##[1]“变量'x'的内容不正确。”

用学生提交和解决方案构建练习状态的基本方法,然后使用运行_直到_fail())为了执行一组测试,可以很容易地嵌入到一个适合您需要的签名工作流中。假设你的学生已经以R脚本的形式提交了他们的作业,你已经下载到文件夹中的计算机上了。意见书(我们已经用一些随机数据预填充了文件夹)。我们有一堆R脚本在意见书文件夹。每个R脚本包含一个学生提交:

dir('提交文件')
##[1]“Student_a.r”“Student_b.r”“Student_c.r”“Student_d.r”“Student_e.r”“Student_e.r”“Student_f.r”“Student_g.r”“Student_h.r”“Student_i.r”“Student_j.r”
readlines('提交/学生'u a.r')
α〔1〕“x<4”
readlines('提交/学生'u b.r')
α〔1〕“x<5”

我们现在可以循环使用所有这些提交文件,并生成一个data.frame,指定每个学生提交的内容是否正确:

library(testwhat)folder_name<-“submissions”all_files<-file.path(folder_name,dir(folder_name))student_results<-sapply(所有_文件,函数(文件)student code<-readlines(文件)设置状态(sol code='x<-5',stu_code=student_code)res<-run_until_fail(ex()%>%check_object('x')%>%check_equal())res$correct)results_df<-data.frame(name=all_files,正确=学生成绩,row.name=空,stringsasFactors=false)结果
##姓名正确 35; 353535353535353535\\35\\35\\35\35\35\35\35\\35\35\\\35\35\\\\35\\\35\ 8份提交材料/学生_h.r虚假9份提交材料S/Student_i.r真10提交/Student_j.r真

这个小演示还是有点粗糙,但我希望这能说明一点:通过一些r的努力来为StUpUpSt[(),您可以将所有的测试什么是检查函数来工作。在中指定的测试运行_直到_fail())都将验证学生的工作并产生有意义的反馈,以指出他们所犯的错误。

了解更多关于测试的信息,金宝搏网址您可以访问吉图布回购程序包文档,生成与PKGDOWN.它的特点是两个小片段概述了如何使用某些检查函数,以及描述所有可以指定参数的引用函数。毫不犹豫地在Github上提出问题或通过[电子邮件受保护],我们喜欢反馈!快乐教学!

这个博客是用rmarkdown生成的。你可以找到源头在这里.

留下评论作者,请关注他们博客上的链接和评论: DataCamp社区-R编程.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, r作业,可视化(可视化) GGPROTT2箱形图地图动画)程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特哈多普刮网)统计 回归主成分分析时间序列交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers


赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)