Problem:Verwendung von lokalen Variablen
Wie lokale Variablen innerhalb eines Bereichs in einem r-Code zu definieren.
Beispiel:
In C++ Das folgende Beispiel definiert einen Umfang, und die Variablen innerhalb des Bereichs sind in außerhalb Code undefinierte erklärt.
{
vector V1 = getVector(1);
vector V1(= getVector(2);
double P = inner_product(V1, V2);
print(P);
}
// the variable V1, V2, P are undefined here!
Hinweis: Dieser Code ist nur die Idee zu illustrieren.
Diese Praxis hat die Vorteile:
- Halten Sie den globalen Namensraum sauber;
- vereinfachender Code;
- Entfernen von Mehrdeutigkeiten, besonders wenn eine Variable ohne Initialisierung wiederverwendet wird.
In R scheint es mir, dass dieser Begriff nur innerhalb der Funktionsdefinitionen existiert. Also, um das vorherige Beispiel-Code zu reproduzieren, würde ich brauchen so etwas wie dies zu tun:
dummy <- function() {
V1 = c(1,2,3);
V2 = c(1,2,3);
P = inner_product(V1, V2);
print(P);
}
dummy();
# the variable V1, V2, P are undefined here!
oder in einer noch obskurer Weise deklarieren eine anonyme Funktion den Funktionsaufruf zu verhindern:
(function() {
V1 = c(1,2,3);
V2 = c(1,2,3);
P = inner_product(V1, V2);
print(P);
})()
# the variable V1, V2, P are undefined here!
Frage
gibt es eine elegantere Möglichkeit lokale Variable zu schaffen?
Es gibt keine Funktion in den Standardpaketen mit dem Namen inner_product, aber mit gewöhnlichen Vektor "*" sollte Ihnen das geben. Dies ist: '(function() { V1 = c (1,2,3); V2 = c (1,2,3); P = V1 * V2; drucken (P); })() 'gibt' # [1] 1 4 9'. Ich verstehe nicht, warum das weniger klar oder einfach ist als die C++ - Version. Wenn Ihr Code Fehler verursacht, liegt das nicht an Problemen mit dem Umfang, sondern daran, dass Sie Fehlermeldungen ignorieren. Wenn das nicht das ist, was du mit deinem ausrufenden Kommentar sagst, dann musst du es weiter erklären. –
es wurde erwähnt, dass der Code nur die Frage zu illustrieren, und nicht mit inneren Produkt zu beschäftigen.Der zweite Kommentar gibt eine bessere Antwort, die aus der Verwendung des "lokalen" Konstrukts wie local ({c = c (1,2,3); d = c (2,3,4); e = c *) besteht. d; print (e)}) – Daniel
Ich fürchte immer noch nicht, was mit "Variablen V1, V2, P sind hier undefiniert" gemeint ist. –