EvaluateInR: Unterschied zwischen den Versionen
Botto (Diskussion | Beiträge) |
PRanz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(33 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
===Zugehörige Evaluatoren=== | |||
*'''MathEvaluator''' | |||
===Beschreibung=== | ===Beschreibung=== | ||
Mit der Funktion ''EvaluateInR'' ist es möglich ''R''-Befehle auszuführen. Das Argument der Funktion ist eine [[Zeichenkette]] | 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 | 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 <code>'</code> umgeben werden, damit sie korrekt umgeformt werden.''' Bsp.: <code>evaluateInR("ifelse([var=test]=='Test', 0, 1)")</code> | |||
===Syntax=== | ===Syntax=== | ||
Eine [[Variablen|Variable]] ''Test'' kann dann folgendermaßen beschrieben werden: | '''Jack3:''' | ||
evaluateInR('argument') | |||
'''Jack2:''' | |||
Eine [[Variablen (Jack2)|Variable]] ''Test'' kann dann folgendermaßen beschrieben werden: | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<option name="Test" type="Typ" cas="Evaluator" value="evaluateInR('argument')" /> | <option name="Test" type="Typ" cas="Evaluator" value="evaluateInR('argument')" /> | ||
Zeile 11: | Zeile 20: | ||
===Parameter=== | ===Parameter=== | ||
* '''Typ''' - Entspricht dem Typen der Variable. | * '''Typ''' - Entspricht dem Typen der Variable (nur in Jack2 notwendig anzugeben). | ||
* '''argument''' - R-Befehl | * '''argument''' - R-Befehl | ||
=== Befehlsreferenz für R === | === 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. | |||
In folgender Tabelle sind einige Beispiele, wie R verwendet werden | |||
Zeile 26: | Zeile 34: | ||
| list(1, 2.34) | | list(1, 2.34) | ||
| [[List]] | | [[List]] | ||
| Eine Liste mit 2 Einträgen | | Eine Liste mit 2 Einträgen | ||
|- | |- | ||
| list(1, ...., n) | | list(1, ...., n) | ||
Zeile 34: | Zeile 42: | ||
| c(1,2,3,4,5,6) | | c(1,2,3,4,5,6) | ||
| [[Vektor]] | | [[Vektor]] | ||
| Eine | | Eine Vektor mit der Länge 6 | ||
|- | |- | ||
| matrix(c(1,2,3,4,5,6),2,3) | | matrix(c(1,2,3,4,5,6),2,3) | ||
| [[Matrix]] | | [[Matrix]] | ||
| Eine 2x3-Matrix mit folgenden Einträgen: [1, 3, 5; 2, 4, 6] | | Eine 2x3-Matrix mit folgenden Einträgen: [1, 3, 5; 2, 4, 6] | ||
|- | |||
| 'test' | |||
| String | |||
| Eine Zeichenkette muss mit <code>'</code> umgeben werden | |||
|} | |} | ||
Zeile 44: | Zeile 56: | ||
===Beispiele=== | ===Beispiele=== | ||
Eine 3x3-Matrix als [[Variablen|Variable]] mit Namen A erstellt man durch den folgenden Befehl: | ====Beispiel 1==== | ||
<syntaxhighlight lang="xml"> | Eine 3x3-Matrix als [[Variablen (Jack2)|Variable]] mit Namen ''A'' erstellt man durch den folgenden Befehl: | ||
'''Jack2:''' | |||
<syntaxhighlight lang="xml"> | |||
<option name="A" type="matrix" cas="Evaluator" value="evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)')" /> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
In dem folgenden Beispiel wird eine Matrixvariable | '''Jack3:''' | ||
A = evaluateInR('matrix(c(1,2,3,4,5,6,7,8,9),3,3)') | |||
Die Ausgabe ist in beiden Fällen | |||
====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:''' | |||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<variables> | <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="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(' | <option name="rang" type="vector" cas="Evaluator" value="evaluateInR('length(dim(matrix(c(1,2,3,4,5,6,7,8,9),3,3)))')" /> | ||
</variables> | </variables> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''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 | |||
=== Änderungen in JACK3=== | |||
'''Die folgenden Änderungen beziehen sich nur auf JACK3.''' | |||
* Die Funktion <code>evaluateInR</code> 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. | |||
=== R-Pakete (JACK3) === | |||
Es werden verschiedene R-Pakete zur Verfügung gestellt, die innerhalb von R-Code genutzt werden können. | |||
Die folgenden Pakete sind installiert: | |||
* AER | |||
* aghanck | |||
* base | |||
* car | |||
* compositions | |||
* datasets | |||
* DescTools | |||
* dplyr | |||
* graphics | |||
* grDevices | |||
* grid | |||
* Hmisc | |||
* ineq | |||
* KernSmooth | |||
* lattice | |||
* lmtest | |||
* MASS | |||
* methods | |||
* moments | |||
* mtvnorm | |||
* psych | |||
* sandwich | |||
* stats | |||
* testthat | |||
* tools | |||
* utils | |||
* zoo | |||
Davon werden die folgenden '''immer''' geladen und stehen somit immer zur Verfügung: | |||
* aghanck | |||
* base | |||
* datasets | |||
* graphics | |||
* grDevices | |||
* grid | |||
* KernSmooth | |||
* lattice | |||
* methods | |||
* stats | |||
* testthat | |||
* utils | |||
'''Pakete die installiert, aber nicht geladen sind können wie folgt verwendet werden:''' | |||
* Das Paket kann mit <code>library("paketname")</code> geladen werden. Danach stehen alle Funktionen zur Verfügung. '''Zu Beachten:''' Möglicherweise überschreibt dies Funktionen aus bereits geladenen Paketen. Existiert bereits eine Funktion mit demselben Namen wird immer die, aus dem zuletzt geladenen Paket, verwendet. Ein so geladenes Paket steht immer für den darauf folgenden R-Code zur Verfügung. Pakete werden nur für eine Anfrage geladen und müssen in anderen Komponenten erneut geladen werden (Beispielsweise muss im Vordefinierten Code und im R-Taschenrechner jeweils die Library geladen werden, damit diese in beiden zur Verfügung steht). Wird der Library-Befehl aus dem Code entfernt und dieser erneut abgeschickt, wird das Paket nicht mehr geladen. | |||
ODER | |||
* Funktionen aus nicht geladenen Paketen können immer mit dem ::-Operator genutzt werden. Dieser wird im folgenden Format verwendet <code>paketname::funktion</code> (Bsp.: <code>base::abs(-2) -> 2</code>). | |||
Wenn Sie weitere R-Pakete benötigen, wenden Sie sich bitte an das JACK-Team. | |||
[[Kategorie:Math-Evaluatorfunktion]][[Kategorie:JACK2]][[Kategorie:JACK3]] |
Aktuelle Version vom 18. Oktober 2024, 07:39 Uhr
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
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('length(dim(matrix(c(1,2,3,4,5,6,7,8,9),3,3)))')" />
</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 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.
R-Pakete (JACK3)
Es werden verschiedene R-Pakete zur Verfügung gestellt, die innerhalb von R-Code genutzt werden können.
Die folgenden Pakete sind installiert:
- AER
- aghanck
- base
- car
- compositions
- datasets
- DescTools
- dplyr
- graphics
- grDevices
- grid
- Hmisc
- ineq
- KernSmooth
- lattice
- lmtest
- MASS
- methods
- moments
- mtvnorm
- psych
- sandwich
- stats
- testthat
- tools
- utils
- zoo
Davon werden die folgenden immer geladen und stehen somit immer zur Verfügung:
- aghanck
- base
- datasets
- graphics
- grDevices
- grid
- KernSmooth
- lattice
- methods
- stats
- testthat
- utils
Pakete die installiert, aber nicht geladen sind können wie folgt verwendet werden:
- Das Paket kann mit
library("paketname")
geladen werden. Danach stehen alle Funktionen zur Verfügung. Zu Beachten: Möglicherweise überschreibt dies Funktionen aus bereits geladenen Paketen. Existiert bereits eine Funktion mit demselben Namen wird immer die, aus dem zuletzt geladenen Paket, verwendet. Ein so geladenes Paket steht immer für den darauf folgenden R-Code zur Verfügung. Pakete werden nur für eine Anfrage geladen und müssen in anderen Komponenten erneut geladen werden (Beispielsweise muss im Vordefinierten Code und im R-Taschenrechner jeweils die Library geladen werden, damit diese in beiden zur Verfügung steht). Wird der Library-Befehl aus dem Code entfernt und dieser erneut abgeschickt, wird das Paket nicht mehr geladen.
ODER
- Funktionen aus nicht geladenen Paketen können immer mit dem ::-Operator genutzt werden. Dieser wird im folgenden Format verwendet
paketname::funktion
(Bsp.:base::abs(-2) -> 2
).
Wenn Sie weitere R-Pakete benötigen, wenden Sie sich bitte an das JACK-Team.