tl; dr

다른 사람들을 가르치는 도구를 만드는 방법을 사람들에게 가르쳐주십시오. 그것은 영향을 극대화하는 효율적인 방법 인 것 같습니다.

  • {swirl} 은 사람들이 R에서 R을 배울 수있게합니다.
  • {swirlify} 는 Swirl 과정을 작성하는 데 도움이되는 패키지입니다.
  • 이 게시물은 Swirl 과정을 시작하는 방법을 설명합니다.
  • 예를 들어, Tidyswirl 이 깔끔한 패키지 를 가르치기 시작했습니다.

소용돌이

Swirl 은 다음과 같은 플랫폼입니다.

R 프로그래밍 및 데이터 과학을 사용자의 페이스대로 대화식으로 R 콘솔에서 가르칩니다.

학습은 활동적이며 이해는 전반적으로 점검됩니다. 학습자는 자신의 페이스대로 이동하고 새로운 과정을 배우기 위해 추가 과정을 다운로드 할 수 있습니다. 그리고 그것은 무료입니다.

시작하려면 Swirl을 설치하고로드 한 다음 콘솔에 인쇄 된 지침을 따르십시오.

콘솔에서 Swirl로드 및 시작

콘솔에서 Swirl로드 및 시작

커뮤니티에서 제공하는 다양한 소용돌이 코스를 다운로드하여 새로운 것에 대해 배울 수 있습니다. 이 게시물은 새로운 코스를 직접 만들고 배포하는 방법에 관한 것입니다.

소용돌이 치다

Sean Kross와 Nick Carchedi는 코스 생성을 쉽게하기 위해 {swirlify} 패키지 를 만들었습니다. 이 게시물에는 간단한 워크 플로가 포함되어 있지만 시작할 때 전체 Swirlify 지침 을 사용할 수 있습니다.

시작 및 실행

새로운 수업 ( ‘수업 1’)을 만들고, 그것이 존재하지 않으면 새로운 과정 ( ‘과정’)을 만듭니다.

다음과 같은 폴더 구조가 생성됩니다.

lesson.yaml파일은 기본적으로 해당 스크립트가 특정 포맷으로 저장되어있는 텍스트 파일입니다. 이 파일을 직접 수정할 수는 있지만 대신 내장 된 Swirlify Shiny 앱에서 편집을 위해 열어 보겠습니다.

응용 프로그램은 현재 작업 수업 (1 단원)을 새 창에서 엽니 다. 왼쪽에는 새로운 질문을 만드는 곳이 있습니다. 오른쪽에서 레슨 파일 자체를 볼 수 있습니다. ‘도움말’탭을 참고하십시오.이 탭에서는 질문의 유형에 대해 알려줍니다.

Swirlify Shiny 앱은 수업을 작성하기위한 GUI를 제공합니다.

Swirlify Shiny 앱은 수업을 작성하기위한 GUI를 제공합니다.

질문을 만들려면 다음 단계를 따르십시오.

  1. 드롭 다운 메뉴에서 질문 유형을 선택하십시오 (예 : 명령 질문, 객관식 또는 정보 메시지)
  2. 텍스트 상자를 채 웁니다.
  3. ‘수업 저장’을 클릭하십시오.
  4. test_lesson()오류를 찾기 위해 실행
  5. ‘데모 레슨’을 클릭 해보십시오.

과정을 시작할 때 데이터 프레임과 같은 개체를 학습자의 환경에 추가 할 수 있습니다. R 코드를 추가하여이를 수행하십시오 initLesson.R. 여기에는 학습 파일 폴더에 저장해야하는 데이터 파일로드가 포함될 수 있습니다.

공과가 끝날 때까지 계속 질문을 추가하십시오. 그때:

  1. 실행 add_to_manifest()을 클릭하여 MANIFEST파일에 수업을 추가 합니다 (아직없는 경우 코스 디렉토리에 만들어집니다). 여기에있는 수업은 선언 된 교과 과정의 일부로 인식됩니다.
  2. 인수 new_lesson()를 변경하는 것을 잊지 않고 새로운 것을 만들 때 사용하십시오 lesson_name.

추가 지식

분명히 코스 구축 과정은 위에서 설명한 것보다 더 미묘한 차이가 있지만 Swirlify 사이트 및 참조 설명서의 설명서 에서 자세한 내용을 확인할 수 있습니다 .

Partcular에서는 Swirlify 지침의 과정 구조 와 수업 레슨을 참조하십시오 .

더 깊이 조사해야 할 세 가지가 있다고 생각합니다 : 수업 파일 구조, 정답 및 수업 시작.

학습 파일 구조

레슨 파일은 기본적으로 특수 텍스트 형식 인 YAML 로 작성 됩니다. 질문은 하이픈과 질문 유형 (클래스) 선언으로 시작하는 별도의 텍스트 블록으로 표시되고, 들여 쓰기 된 새로운 행에 대한 추가 인수가옵니다.

첫 번째 블록은 항상 Class: meta파일 이름과 수업 이름과 같은 기본 정보를 제공합니다. 또 다른 간단한 방법 은 사용자에게 표시 할 텍스트 인 Class: text인수를 하나만 더 제공하는 것 Output입니다.

실제로 질문을 추가하는 세 가지 방법이 있습니다.

  1. 이 게시물의 앞부분에서 설명한 Shiny 앱
  2. 사용하여 wq_*()활성 수업에 질문을 추가 기능의 가족을 – wq_message(output = "Text here")예를 들어 정보 텍스트를 추가합니다.
  3. YAML 파일에 직접 작성합니다.

질문 수업 및 Swirlify 지침에 쓰는 방법에 대한 자세한 내용이 있습니다 .

올바른 답

답변은 어떻게 인코딩되고 체크인 lesson.yaml됩니까? 이 질문에 대해 YAML을 고려하십시오.

그래서 CorrectAnswer당신은 정답을 제공하는 곳이다 (!). 사용자가 skip()질문을 선택하면이 행이 실행됩니다 . AnswerTests그러나 사용자의 입력이 실제로 평가 될 것입니다. 그것은 사용 omnitest올바른 표현 (비교 기능을 correctExpr사용자의 대답을).

그러나 종종 한 가지 이상의 대답 방법이 있습니다. 이 any_of_exprs()경우이 함수를 사용해야합니다.

사용자 정의 답변 테스트를 작성하는 방법을 비롯하여 Swirlify 지침의 답변 테스트에 대한 자세한 정보가 있습니다 .

수업 시작

initLesson.R파일 에있는 모든 내용 은 수업이로드 될 때 실행됩니다. 질문을 통해 객체를 만들고 참조 할 수 있습니다. 예를 들어 데이터 프레임을 추가 할 수 있습니다.

다음 lesson.yaml과 같이 질문 할 수 있습니다 .

데이터 프레임은 시작시로드되었으므로 사용자는 질문에 대답하기 위해 데이터 프레임과 상호 작용할 수 있습니다.

또한 레슨 폴더에 데이터 세트를 추가하고 initLesson.R파일을 통해 사용자 환경으로 데이터 세트를 읽을 수 있습니다. 자세한 내용은 데이터 포함에 대한 Swirlify 지침 을 참조하십시오.

코스 공유

축하해. 과정을 공유 할 준비가되었습니다.

이를 수행하는 데는 여러 가지 방법이 있습니다. 학습자가 Swirl의 swirl::install_course_*()기능을 사용하여 다음과 같은 과정을 설치 하는 것이 가장 쉽습니다 .

  • GitHub 레포
  • DropBox, Google 드라이브 또는 일부 URL에 저장된 zip 파일
  • 과정 폴더 – 지퍼가 달린 지 아닌지 – 컴퓨터에서 로컬로 다운로드

또한 단일 .swc파일로 코스를 압축 compress_course()하고 Swirl Course Network 에서 호스팅하도록 요청을 제기 할 수 있습니다 . 거기에서 다운로드 할 수 있습니다 install_course().

소용돌이 치는 더 많은 수와 범위의 코스를 가짐으로써 강화됩니다.

티 디스 워일

위선을 최소화하기 위해 Tidyswirl이라는 소용돌이 코스를 시작 했습니다 . 목표는 tidyverse의 각 핵심 패키지를 소개 하는 것 입니다. 현재 {tidyr} 와 {tibble}의 초안 수업이 있습니다 .

Tidyswirl은 현재 GitHub에 있습니다. 설치하기 위해서:

자유롭게 새로운 수업에 참여하거나 문제를 제기하십시오 .

항변

R 커뮤니티는 크고 친숙합니다. Swirl은 사람들이 배우는 데 도움이됩니다. 더 많은 과정을 만드는 것이 좋을 것입니다.

 

tl;dr

Teach people to create tools that teach other people. That seems an efficient way to maximise impact.

  • {swirl} lets people learn R from within R
  • {swirlify} is a package to help write Swirl courses
  • This post explains how to start a Swirl course
  • For example, I’ve begun Tidyswirl for teaching tidyverse packages

Swirl

Swirl is a platform that:

teaches you R programming and data science interactively, at your own pace, and right in the R console!

Learning is active and understanding is checked throughout. Learners can move at their own pace and download additional courses to learn about new things. And it’s free.

To begin, install and load Swirl then follow the instructions printed in the console.

Loading and starting Swirl from the console

Loading and starting Swirl from the console

You can learn about new things by downloading various community-contributed Swirl courses. This post is about how you can quickly create and distribute a new course yourself.

Swirlify

Sean Kross and Nick Carchedi have created the {swirlify} package to make course creation easy. This post covers a simple workflow to get you started, but full Swirlify guidance is available.

Get up and running

Create a new lesson (‘Lesson 1’), which also creates a new course (‘Course’) if it doesn’t exist.

The following folder structure is generated:

The lesson.yaml file is basically a text file where the question script is stored in a particular format. You can modify this file directly, but let’s open it for editing in the built-in Swirlify Shiny app instead:

The app will open the current working lesson – Lesson 1 – in a new window. On the left is where you create new questions. On the right you can see the lesson file itself. Note the ‘Help’ tab, which tells you about the types of questions you can make.

The Swirlify Shiny app provides a GUI for writing lessons

The Swirlify Shiny app provides a GUI for writing lessons

To build a question:

  1. Choose a question type from the dropdown menu (e.g. command questions, multiple choice, or just informational messages)
  2. Fill in the text boxes
  3. Click ‘Save Lesson’
  4. Run test_lesson() to look for errors
  5. Click ‘Demo Lesson’ to try it out

You can add objects, like data frames, to the learner’s environment when they start your course. Do this by adding R code to initLesson.R. This can include loading data files, which you should store within the lesson folder.

Continue adding questions until the lesson is complete. Then:

  1. Run add_to_manifest() to add the lesson to the MANIFEST file (it’ll be created in the course directory if it doesn’t already exist). Lessons in here are recognised as part of the course in the declared order.
  2. Use new_lesson() to create a new one, remembering to change the lesson_name argument.

Extra knowledge

Clearly the process of course building is more nuanced than outlined above, but you can learn more from the documentation on the Swirlify site and reference manual.

In partcular, See the course structure and writing lessons pages of the Swirlify guidance.

I think there are three things to investigate further: lesson file structure, correct answers and lesson startup.

Lesson file structure

The lesson file is written in YAML, which is basically a special form of plain text. Questions appear as separate blocks of text that start with a hyphen and a question type (class) declaration, followed by further arguments on new indented lines.

The first block is always Class: meta and provides basic information about the file, like your name and the lesson name. Another simple one is Class: text to which you supply only one more argument, the Output, which is text to display to the user.

There are actually three ways to add questions:

  1. In the Shiny app, as outlined earlier in this post.
  2. By using the wq_*() family of functions to add questions to the active lesson – wq_message(output = "Text here") adds informative text, for example.
  3. By writing directly into the YAML file.

There’s more on questions classes and how to write them in the Swirlify guidance.

Correct answers

How are answers enoded and checked in lesson.yaml? Consider the YAML for this question:

So CorrectAnswer is where you provide the correct answer (!). This line will be run if the user chooses to skip() the question. AnswerTests is, however, what the user’s input will actually be evaluated against. It uses the omnitest function to compare the correct expression (correctExpr) to the user’s answer.

But often there’s more than one way to answer. The any_of_exprs() function should be used in this case.

There’s more on answer testing in the Swirlify guidance, including how to write custom answer tests.

Lesson startup

Anything in the initLesson.R file will be run when the lesson is loaded. You can create objects and refer to them in your questions. For example, you could add a data frame:

You could then ask in lesson.yaml something like:

The dataframe was loaded on startup, so the user can interact with it to answer the question.

You can also add datasets to the lesson folder and read them into the user’s environment via the initLesson.R file. See the Swirlify guidance on including data for more information.

Share your course

Congratulations. You’re ready to share your course.

There are several ways to do this. It’s easiest for learners to use Swirl’s swirl::install_course_*() functions to install courses from:

  • a GitHub repo
  • a zip file stored on DropBox, Google Drive, or some URL
  • a course folder – zipped or not – downloaded locally on their machine

You can also compress your course to a single .swc file with compress_course()and raise a pull request for it to be hosted on the Swirl Course Network. It can be downloaded from there with install_course().

Swirl is strengthened by having a greater number and range of courses.

Tidyswirl

To minimise hypocrisy, I’ve started a Swirl course called Tidyswirl. The goal is to introduce each core package of the tidyverse. It currently has draft lessons for {tidyr} and {tibble}.

Tidyswirl is currently on GitHub. To install:

Please feel free to contribute new lessons or raise issues.

Plea

The R community is large and friendly. Swirl helps people learn. It would be great to see more courses being made.

 

참조: Teach a person to Swirl – rostrum.blog