---
# System prepended metadata

title: APGCB23PDB-QA
tags: [APGCB23PDB]

---

---
title: APGCB23PDB-QA
tags: APGCB23PDB
---

# Questions & Answers

You are invited to use this document to ask questions.
We will address them during the workshops.

Prologue:
* There are no stupid questions.
* The more specific the question, the more specific the answer (usually).
* This is a living document.
* Please use the template below.

Ideas:
* Why is ... the case?
* How would you approach ...?
* How to do ... in R/Python/*?
* How does ... work in R/Python/*?

**Please take a look at https://stackoverflow.com/help/how-to-ask**

**If you do not find your question here, it may already have been 
integrated into the course notes.**

---

## [ ] Copy-paste and insert your question here. You can provide more details below.

Try to be as specific as possible. See also https://stackoverflow.com/help/how-to-ask.

**Name (optional):** ...

**Question:** ...

**Discussion:** ...

**Answer:** ...

---


**Name (optional): David Böhm

**Question:** Ich verwende RStudio mit Rmarkdown, um den Bericht zu erstellen. Wie kann ich im Bericht Variablen etc. einbauen, die ich in meinem RStudio Environment berechnet habe, z.B. den Maximalwert einer Zeitreihe etc.? Wie kann ich Tabellen einfügen, die ich zuvor über das RSkript erstellt hab?
**Discussion:** ...

**Answer:** ...

Claus

R Markdown ist eine Möglichkeit [Literate Programming](https://en.wikipedia.org/wiki/Literate_programming) umzusetzen.
Die zentrale Idee dabei ist, dass (ich zitiere hier den R Markdown Slogan)

> R Markdown documents are fully reproducible. 
> Use a productive notebook interface to weave together narrative text 
> and code to produce elegantly formatted output.

Das heißt insbesondere, dass der Code den DU ausführen möchtest, IM Notebook (Rmd-File) steht (bzw. stehen muss).
Die enge Verschränkung von Code (=Weg) und Ergebnis (=Ziel) und Diskussion ist in einem Dokument ist in meinen Augen der große Mehrwert.
Falls du also Code interaktiv in der Console tippst, dann wandert der einfach in's Dokument.

R Markdown IST (wird;) dein RSkript.

Der Unterschied ist lediglich die verwendete Auszeichnungssprache.

Bei R Markdown ist alles standardmäßig Markdown, es sei denn, du markierst eine Stelle als Code (R, Python, SQL, ...).
Im RSkript ist alles standardmäßig R.

Die Code Blöcke im R Markdown kannst du weitehrin interkativ ausführen.

Mein Vorschlag:
1. Erstelle ein R Markdown
1. Spiele damit ein bisschen herum
1. Passe das Dokument schrittweise an unser Projekt an

Ich finde die [Doku](https://rmarkdown.rstudio.com/lesson-1.html) ganz gut.

Hilft dir das?

Antwort David: 
Vielen Dank, die Antwort hilft. 
Zusatzinfo: man mit dem Befehl "source" auch aus anderen R-Skripten Code-Teile ausführen.

---

**Name (optional): Teresa** :heart: :cherry_blossom:

**Question:** 
Woran könnte es liegen, dass sich in RStudio keine (erforderlichen) Packages in ein Environment installieren lassen?
Auch ein Forcen der Download-Methode innerhalb von renv mit *Sys.setenv(RENV_DOWNLOAD_METHOD = getOption("download.file.method"))* hilft nicht. 
Die Installation läuft nur mit *utils::install.packages("packagename")* durch, allerdings wird das Package dann irgendwo 
hininstalliert und nicht ins Environment. (Komischerweise taucht der Packageordner aber im von renv erstellten 
"renv-Ordner" auf, aber nicht im Lockfile :broken_heart:)

**Discussion:** ...

**Answer:** :mag_right:

Claus

Ich fürchte ich verstehe die Frage nicht ganz.

Was tust du genau, wenn es nicht funktioniert und was für eine Meldung erhältst du dann?

Wenn du im RStudio GUI ein Package installierst, wird letzten Endes der Befehl `install.packages("packagename")` aufgerufen.
D.h. es spricht nichts dagegen, direkt über die R Konsole `install.packages("packagename")` auszuführen.

Wenn du im RStudio per GUI ein Package installierst, dann hast du im Kontextmenü den Punkt "Install to Library:", hier 
sollte das renv Environment stehen. Was steht da bei dir? (renv Environment natürlich nur, wenn auch initialisiert...)

Im [Lockfile steht das Package erst, wenn es auch verwendet wird](https://rstudio.github.io/renv/articles/faq.html).

Grundsätzlich:
* Es gibt einen Ordner, da liegt Zeug drinnen, unter anderem dein Environment. Das ist per se nichts besonderes.
* ABER: Wenn du in diesem Ordner arbeitest und der Ordner dein Projekt ist, dann macht es Sinn,
  auch das Working Directory von RStudio dort hin zu legen.

Ich kann mir vorstellen, dass (nicht nur aber auch) beim Ausprobieren Pfade durcheinander gekommen sind.
Um auf Nummer sicher zu gehen, empfehle ich, mit RStudio ein neues Projekt anzulegen, dort gleich beim 
Erstellen des Projekts im Kontextmenü "renv" anzuhaken und dann neu zu probieren.

Was passiert dann?

Grundsätzlich: Siehe auch
* `getwd()`
* `setwd()`

Danke, ist für mich verständlich und erledigt :)

---

**Name (optional): Veronica** :hatching_chick: :tulip:

**Question:**
Wie kann ich kontrollieren, wo renv das lock File hinspeichert?

**Discussion:** Ich habe mehrmals *renv::init* und *renv::snapshot* probiert und es wurde manchmal außerhalb meides wd gespeichert. :confused:

**Answer:** ...

Claus

Kann es sein, dass beim Ausprobieren Pfade durcheinander gekommen sind?

Grundsätzlich braucht es um renv zu verwenden ja nur eine R Session. Die kann überall (=irgendein Ordner) stattfinden.
Wenn man die Befehle ausführt, werden sie dann relativ zur aktuellen Position interpretiert, da kann also schon was schief gehen.

Wie oben:
Um auf Nummer sicher zu gehen, empfehle ich, mit RStudio ein neues Projekt anzulegen, dort gleich beim 
Erstellen des Projekts im Kontextmenü "renv" anzuhaken und dann neu zu probieren.

Ist das Verhalten dann konsistent?

Siehe auch [diese Diskussion](https://github.com/rstudio/renv/issues/472).

---

**Name: Claus**

**Question:**
Wie kann ich den Bericht "per Knopfdruck" erzeugen?

**Discussion:**
Es soll einen Befehl, ein Kommando geben, um den Bericht zu erstellen - ohne Umweg über ein GUI wie R Studio.

**Answer:** ...

Teilantwort von Claus mit Einladung zur Ergänzung ;)

Angenommen wir bauen den Bericht mit R Markdown:
* Wir könnten ein Batch Skript schreiben
* Wir brauchen `rmarkdown` und `render()`
* Die renv-Umgebung ist Projekt-lokal, ebenso wie unser unser
  R Markdown Bericht, d.h. wir könnten davon ausgehen, dass 
  wir `render()` von dort aus aufrufen

Siehe auch [renv Doku zum Thema `activate`](https://rstudio.github.io/renv/reference/activate.html).

Also, wie machen wir das?

**Name: David** 

**Question:** Wie kann ich Daten oder Informationen von einem *.R- an ein *.rmd-File übergeben?

**Discussion:** 
Mein Ansatz wäre, im *R-File in einer Schleife über alle Input-Dateien die Grafiken zu erzeugen und dann RMarkdown aufzurufen. Aber wie bekomm ich die Info in das *.rmd-File rüber, welche Grafiken in den jeweiligen Bericht einzufügen sind? 
Wenn ich die Grafiken direkt im *.rmd-File erzeuge, wie bekomm ich die aktuell zu verarbeitenden Input-Daten in das *.rmd-File?

**Answer:** ...