EvaluateInR

Aus JACK Wiki
Zur Navigation springen Zur Suche springen

Zugehörige Evaluatoren

  • MathEvaluator

Beschreibung

Mit der Funktion EvaluateInR ist es möglich R-Befehle auszuführen. Das Argument der Funktion ist eine Zeichenkette, welche in R direkt ausgeführt wird. In der Zeichenkette können FillInvariablen (pos), sowie Aufgabenvariablen (var) auftauchen. Diese Variablen werden dann automatisch in die R-Sprache übersetzt.

Strings müssen mit einfachen Anführungszeichen ' umgeben werden, damit sie korrekt umgeformt werden. Bsp.: evaluateInR("ifelse([var=test]=='Test', 0, 1)")

Syntax

Jack3:

evaluateInR('argument')

Jack2:

Eine Variable Test kann dann folgendermaßen beschrieben werden:

 <option name="Test" type="Typ" cas="Evaluator" value="evaluateInR('argument')" />

Parameter

  • Typ - Entspricht dem Typen der Variable (nur in Jack2 notwendig anzugeben).
  • argument - R-Befehl

Befehlsreferenz für R

In folgender Tabelle sind einige Beispiele, wie R verwendet werden kann. Die Variablen die damit gesetzt werden, können ebenfalls wieder in R angewandt werden oder auch für andere Zwecke im Evaluator verwendet werden.


argument Typ Beschreibung
list(1, 2.34) List Eine Liste mit 2 Einträgen
list(1, ...., n) List Eine Liste mit n Einträgen
c(1,2,3,4,5,6) Vektor Eine Vektor mit der Länge 6
matrix(c(1,2,3,4,5,6),2,3) Matrix Eine 2x3-Matrix mit folgenden Einträgen: [1, 3, 5; 2, 4, 6]
'test' String Eine Zeichenkette muss mit ' umgeben werden

Eine Ausführliche Dokumentation findet man hier: [1]

Beispiele

Beispiel 1

Eine 3x3-Matrix als Variable mit Namen A erstellt man durch den folgenden Befehl:

Jack2:

<option name="A" type="matrix" cas="Evaluator" value="evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)')" />

Jack3:

A = evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)')

Die Ausgabe ist in beiden Fällen \( A = \left(\begin{array}{rrr}1 & 4 & 7\\2 & 5 & 8\\3 & 6 & 9 \end{array}\right)\)

Beispiel 2

In dem folgenden Beispiel wird eine Matrixvariable A erzeugt und anschließend der Rang von A in der Variable rang berechnet und gespeichert.

Jack2:

 <variables>
   <option name="A" type="matrix" cas="Evaluator" value="evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)')" />
   <option name="rang" type="vector" cas="Evaluator" value="evaluateInR('rank([var=A])')" />
 </variables>

Jack3:

A = evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)')
rang = evaluateInR('length(dim([var=A]))')

Erzeugt eine Variable A (vom Typ matrix) und bezieht sich auf eine 3x3-Matrix. Außerdem wird eine Variable rang (vom Typ vector) erzeugt, welche den Rang der Variable A berechnet. In diesem Beisppiel ist \(A = \left(\begin{array}{rrr} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{array}\right)\) und rang=2.

Änderungen in JACK3

Die folgenden Änderungen beziehen sich nur auf JACK3.

  • Die Funktion evaluateInR erlaubt kein Verschachteln von Funktionen. Es ist nur ein String als Argument erlaubt.
  • Zum Konkatenieren von R-Ausdrücken und Variablen, ist es erlaubt diese direkt im String anzugeben.

Hinweis

  • Strings müssen mit einfachen Anführungszeichen ' umgeben werden, damit sie korrekt umgeformt werden.
  • Bei Rechenausdrücken mit Gleitkommazahlen können Rundungsfehler auftreten. Falls solche Fehler auftreten, kann die Berechnung alternativ mithilfe von EvaluateInSage durchgeführt werden. Rundungsfehler können auch mit round() verbessert werden. Zudem ist darauf zu achten, dass Gleitkommazahlen ggf. auf eine sinnvolle Nachkommastelle gerundet werden.