我会主张一种完全不同的方法。我看过从两个不同角度教授的 R 教程:一种是构建块方法,向用户介绍 R 的基本概念,另一种是震惊和敬畏方法,其中向用户展示 R 的惊人功能,但留下对如何做任何事情的了解相对较少。后者肯定更能引起学生的共鸣,但在实际培养用户方面似乎没有一个非常有效。
相反,我会在 SPSS 中执行一个常见且相对简单的任务,然后将其转换为 R,您会有点假装天真 - 例如,按照 Xi'an 的极好建议,查找一些所需的函数,??
而不仅仅是从记忆中召回正确的功能。您的新手在学习 R 时几乎肯定会转换现有流程,而不是从头开始编写它们 - 那么为什么不向他们展示您将如何进行呢?
一个很好的例子可能包括加载数据、执行一些描述和弹出一些基本图。 lm()
可以非常非常简单,并产生他们可以理解的结果,并且可以与 SPSS 输出进行比较,因此也可以很好地涵盖。
对于家庭作业,让他们尝试转换他们的一个简单过程或加载和探索他们非常熟悉的数据集。给他们一些一对一的时间来找出哪里出了问题,然后在下一个会话中通过更多示例转换来涵盖这些问题。您列表中的概念将不可避免地出现(我的赌注:因素与字符向量,for 与 apply) - 然后您将有一个涵盖它们的真实动机。如果他们没有出现(attach
),那么他们还不是真的需要 - 如果这意味着你的新手在早期(for
而不是apply
)编写一些非惯用代码,我看不出有什么害处。
这样,你的学生可以像外语学生一样进步(或者至少是我做的):简单表达的粗略翻译会激发对更复杂表达的渴望,从而导致对语法的更深入理解的渴望,最终导致惯用表达。不要过早跳到“语法”,也不要太担心教他们他们不问的东西,因为他们可能会忘记它。关于惯用表达的温和指针很棒(for
vs apply
),但主要是让他们自己生成输出和探索。