{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "c6479091", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "knitr::opts_chunk$set(echo = TRUE)" ] }, { "cell_type": "markdown", "id": "14421f73", "metadata": {}, "source": [ "# Aufgaben hinzufügen\n", "\n", "RMarkdown-Datei mit Lösungen herunterladen\n", "\n", "\n", "RMarkdown-Datei ohne Lösungen herunterladen\n", "\n", "\n", "Aufgaben der RTraining-Plattform sind in RMarkdown geschrieben und werden \n", "automatisch vom Skript [rmd2myst.R](https://github.com/Methods-Berlin/RTraining/blob/main/rmd2myst.R)\n", "in myst-Markdown übersetzt. myst-Markdown ist die von JupyterBook unterstützte\n", "Markdown Version. Neue Aufgaben werden hinzugefügt, indem diese als Rmd-Dateien\n", "im Ordern Aufgaben_rmd gespeichert werden. Zusätzlich muss der Name der Datei \n", "(z.B. bei \"neue_Aufgabe.Rmd\" ist der Name \"neue_Aufgabe\") im Dokument _toc.yml\n", "hinzugefügt werden. Der Name der Datei darf **keine Umlaute** enthalten und statt \n", "Leerzeichen muss man Unterstriche nutzen, z.B. statt \"Einführung in R\", muss die \n", "Datei \"Einfuehrung_in_R\" bennant werden. \n", "\n", "Wenn die Aufgabe R-Pakete nutzt, muss zusätzlich überprüft werden, ob dieses \n", "bereits installiert wird. Alle bisher installierten Pakete werden im Dokument\n", "[environment.yml](https://github.com/Methods-Berlin/RTraining/blob/main/environment.yml)\n", "aufgefüht. Hier steht beispielsweise:\n", "```\n", "dependencies:\n", " - ...\n", " - r-tidyverse\n", "```\n", "Es wird also das gesamte tidyverse installiert. Wenn wir das Paket `psych` hinzufügen\n", "wollen, dann müssen wir erst schauen, ob es dieses für Anaconda gibt. Hierfür \n", "gehen wir auf [anaconda.org](https://anaconda.org/) und suchen nach `r-psych`.\n", "Wichtig: R-Pakte fangen auf Anaconda immer mit `r-` an! [r-psych](https://anaconda.org/search?q=type%3Aconda+r-psych)\n", "existiert auf Anaconda und wir können es daher einfach hinzufügen, indem\n", "wir es in [environment.yml](https://github.com/Methods-Berlin/RTraining/blob/main/environment.yml) \n", "ergänzen:\n", "```\n", "dependencies:\n", " - ...\n", " - r-tidyverse\n", " - r-psych\n", "```\n", "Das Paket wird nun bei nächsten Erstellen der Webseite installiert und kann mit \n", "`library(psych)` aufgerufen werden.\n", "\n", "Die automatische Übersetzung unterstützt zur Zeit leider nicht alle Funktionen\n", "von RMarkdown. Das betrifft insbesondere die tags, die in R Code-Blöcken genutzt\n", "werden können (z.B. `eval = FALSE`). Außerdem können nicht alle html-tags (z.B.\n", "`aside` oder `details`) vollumfänglich genutzt werden.\n", "\n", "Im Folgenden werden die unterstützten Optionen demonstriert. Der Quelltext\n", "ist in [GitHub](https://github.com/Methods-Berlin/RTraining/tree/main/Aufgaben_rmd/Aufgaben_hinzufuegen.Rmd)\n", "hinterlegt.\n", "\n", "## Code-Blöcke\n", "\n", "Die folgenden Code-Blöcke werden unterstützt:\n", "\n", "### Code-Block ohne tags:" ] }, { "cell_type": "code", "execution_count": 2, "id": "5c84bbe9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 2\n" ] } ], "source": [ "# einfacher code-Block\n", "print(2)" ] }, { "cell_type": "markdown", "id": "5d4e488d", "metadata": {}, "source": [ "### Code-Block mit eval = FALSE\n", "\n", "In Rmarkdown-Style:\n", "``` r\n", "# nicht ausgeführter Code\n", "print(3)\n", "```\n", "\n", "In quarto-Style:\n", "``` r\n", "# nicht ausgeführter Code\n", "print(3)\n", "```\n", "\n", "### Code-Block mit echo = FALSE\n", "\n", "In Rmarkdown-Style:" ] }, { "cell_type": "code", "execution_count": 3, "id": "3aceaef0", "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# versteckter input, angezeigter output\n", "print(3)" ] }, { "cell_type": "markdown", "id": "9af577dc", "metadata": {}, "source": [ "In quarto-Style:" ] }, { "cell_type": "code", "execution_count": 4, "id": "e12fb666", "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# versteckter input, angezeigter output\n", "print(3)" ] }, { "cell_type": "markdown", "id": "4be51440", "metadata": {}, "source": [ "### Code-Block mit include = FALSE\n", "\n", "In Rmarkdown-Style:" ] }, { "cell_type": "code", "execution_count": 5, "id": "86d0d0d6", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# versteckter input, versteckter output\n", "print(3)" ] }, { "cell_type": "markdown", "id": "5d491f9c", "metadata": {}, "source": [ "In quarto-Style:" ] }, { "cell_type": "code", "execution_count": 6, "id": "47a5d965", "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# versteckter input, versteckter output\n", "print(3)" ] }, { "cell_type": "markdown", "id": "fbfe4129", "metadata": {}, "source": [ "## Details\n", "\n", "Details nur mit Text:\n", "\n", "
\n", "Details mit Text\n", "
\n", "\n", "Details nur mit code:" ] }, { "cell_type": "code", "execution_count": 7, "id": "817bad21", "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 2\n" ] } ], "source": [ "# details mit code-Block\n", "print(2)" ] }, { "cell_type": "markdown", "id": "9ded8a77", "metadata": {}, "source": [ "Wichtig: Text und Code darf in `details` nicht kombiniert werden!\n", "\n", "### Details - code-Block mit eval = FALSE\n", "\n", "In Rmarkdown-Style:\n", "
\n", "
\n",
    "\n",
    "# nicht ausgeführter Code\n",
    "print(3)\n",
    "\n",
    "
\n", "
\n", "\n", "In quarto-Style:\n", "
\n", "
\n",
    "\n",
    "print(3)\n",
    "\n",
    "
\n", "
\n", "\n", "### Details - code-Block mit echo = FALSE\n", "\n", "In Rmarkdown-Style:" ] }, { "cell_type": "code", "execution_count": 8, "id": "40c7e5d4", "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# nicht ausgeführter Code\n", "print(3)" ] }, { "cell_type": "markdown", "id": "3d4260e4", "metadata": {}, "source": [ "In quarto-Style:" ] }, { "cell_type": "code", "execution_count": 9, "id": "554a429c", "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1] 3\n" ] } ], "source": [ "# nicht ausgeführter Code\n", "print(3)" ] }, { "cell_type": "markdown", "id": "3f17cd5f", "metadata": {}, "source": [ "## Aufgaben - Inhalt \n", "\n", "Die Aufgaben beziehen sich auf die Inhalte der R-Lernplattform und werden entsprechend unterteilt und \n", "benannt, z.B. \"Einführung in R\". Es gibt keine explizite Anzahl an Aufgaben, die für jeden Abschnitt erstellt werden, sondern \n", "es wird sich an den Inhalt orientiert. Pro Themenbereich werden 1-2 Aufgaben erstellt mit dem Ziel, das Wissen, das in dem \n", "Abschnitt vermittelt wird, weitestgehend abzufragen. Die Aufgaben können auch mehrere Themenbereiche gleichzeitig abfragen \n", "und können (bzw. sollen) in Ihrer Schwierigkeit variieren. \n", "\n", "Jede Aufgabe besteht aus drei Teilen: 1) Themenbereich, 2) Aufgabe in schriftlicher Form und 3) Lösung als code-Block. \n", "1) Der Themenbereich dient als die Unterschrift, z.B. \"Objekt, Logische Operationen\" und wird mit 2 oder mehr \"#\" prefixiert.\n", " Nur die Überschrift bzw. der Name des Aufgabenabschnitts (z.B. \"Einführung in R\") wird mit einem einzelnen \"#\" prefixiert. \n", "2) Die Aufgaben werden per \"du\" geschrieben. Die Aufgaben werden nicht nummeriert. \n", "3) Der Anfang und das Ende der Lösung wird mit `` bzw. `` markiert. Z.B.: \n", "\n", "``" ] }, { "cell_type": "code", "execution_count": 10, "id": "f3faf377", "metadata": { "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "TRUE" ], "text/latex": [ "TRUE" ], "text/markdown": [ "TRUE" ], "text/plain": [ "[1] TRUE" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x <- 5000\n", "y <- 8^4\n", "y <= x" ] }, { "cell_type": "markdown", "id": "27ca9df7", "metadata": {}, "source": [ "``\n", "\n", "Die Tags `` bzw. `` müssen immer in einer eigenen Zeile stehen. Folgendes\n", "ist nicht erlaubt: \n", "\n", "\"Berechne 123*456 in R. `` `123*456` ``\".\n", "\n", "Korrekt wäre:\n", "\n", "\"Berechne 123*456 in R. \n", " \n", "``\n", "\n", "`123*456`\n", "\n", "``\".\n", "\n", " \n", " ## Checkliste \n", " \n", " Diese Checkliste kann zur Selbstüberprüfung verwendet werden: \n", " \n", " - R Übungsaufgaben erstellen\n", " - Lösungen mit \"`` Meine Lösung steht hier ``\" markieren\n", " - Header level überprüfen: Nur die erste Überschrift darf auf Level 1 sein (# Erste Überschrift) alle anderen\n", " Unterschriften müssen auf höherem Level sein (## Unterschrift) \n", " - Dokumenten-Name überprüfen: Nur \"Standard\"-Buchstaben verwenden (kein ßäöü) und Unterstriche statt Leerzeichen verwenden\n", " - Dokument auf GitHub hochladen\n", " - Dokument zu _toc.yml hinzufügen\n", " - Überprüfen, ob alle benötigten Pakete bereits im [environment.yml] installiert sind. Wenn nicht dann hinzufügen. \n", " - Pull request erstellen" ] } ], "metadata": { "jupytext": { "formats": "md:myst", "text_representation": { "extension": ".md", "format_name": "myst", "format_version": 0.13, "jupytext_version": "1.11.5" } }, "kernelspec": { "display_name": "R", "language": "R", "name": "ir" }, "language_info": { "codemirror_mode": "r", "file_extension": ".r", "mimetype": "text/x-r-source", "name": "R", "pygments_lexer": "r", "version": "4.3.1" }, "source_map": [ 16, 19, 79, 82, 101, 105, 108, 112, 117, 121, 124, 128, 142, 147, 179, 185, 192, 198, 220, 226 ] }, "nbformat": 4, "nbformat_minor": 5 }