2017-01-19 3 views
1

Wie kann ich eine Liste von alle die nicht qualifizierten Namen, die im aktuellen Bereich gefunden werden können?Wie kann ich eine Liste aller unqualifizierten Namen erhalten, die im aktuellen Bereich gefunden werden können?


Wenn Ihre Antwort ls ist, geben Sie bitte genau das, was Argumente/Optionen, die ich zu ls passieren muss. Dito für objects.

Zum Beispiel nach library(splines) ausgeführt wird, welche Argumente muss ich ls so passieren, dass die Ergebnisse "backSpline" (zusammen mit "library" und "c" und "matrix", und alle anderen Kennungen, die in ihrem Umfang standardmäßig sind) umfassen.


Hier ist eine Klarstellung für die Person, die gewählt hat, um diese Frage aus Mangel an Klarheit zu schließen.

Bitte folgen Sie diesen Schritten.

## 1. Start an `R` session like this (or the equivalent for your system): 

% R_PROFILE_USER= /usr/bin/R --quiet 
> 

## 2. Evaluate the following expression, and note that there's no error; 
## (BTW, `c` is an example of an unqualified name) 

> class(c) 
[1] "function" 

## 3. Evaluate the following expression, and note the "not found" in the error 
## message; (`backSpline` is also an unqualified name) 

> class(backSpline) 
Error: object 'backSpline' not found 

## 4. Evaluate the following expression, and note that this time there is no 
## error; (`splines::backSpline` is an example of a qualified name) 

> class(splines::backSpline) 
[1] "function" 

## 5. Evaluate the following expression 

> library(splines) 

## 6. Now, once again, evaluate the expression from (4) above, and note that 
## there's no error 

> class(backSpline) 
[1] "function" 

## 7. (Optional) Confirm that evaluating the expression from (2) still produces 
## no error 

> class(c) 
[1] "function" 

Am Ende der oben beschriebenen Schritte wird der Name backSpline wird in dem aktuellen Bereich „gefunden“ (während sie nicht am Anfang war, entsprechend der Fehlermeldung in (3)). Im Gegensatz dazu wurde zu jeder Zeit c im aktuellen Umfang gefunden.

Ich bin auf der Suche nach einem Ausdruck, der zu einer Auflistung (oder, genauer gesagt, einem Vektor von Zeichenfolgen), die alle Namen enthält, die im aktuellen Bereich "gefunden" werden. Wenn dieser Ausdruck zu einem Zeitpunkt vor (5) oben ausgewertet wird, sollte die resultierende Liste die Zeichenfolge "c" enthalten und sollte nicht die Zeichenfolge "backSpline" enthalten; und wenn es unmittelbar nach (5) oben bewertet wird, sollte es beide Zeichenfolgen "c" und "backSpline" enthalten.

Wenn das oben genannte immer noch nicht klar genug ist, bitte seien Sie nett genug, um zu formulieren, was Sie immer noch nicht verstehen.

+1

Das ist eine ganze Reihe von Funktionen, wenn ich Sie richtig verstehe. Sie können dies versuchen: 'f <- c(); for (s in search()) {f <- append (f, ls (s))} Macht das, was du willst? – Chrisss

+1

Vielleicht 'apropos (". ")'? Vielleicht mit 'where = TRUE'? Nicht sicher, was du mit "unqualifizierten" Namen meinst. – Gregor

+0

Überprüfen Sie, ob Sie das suchen: http://stackoverflow.com/a/38448219/1691723. – Sathish

Antwort

1

Es klingt wie du willst apropos. Sie müssen eine Suchzeichenfolge angeben, aber "" oder "." sollte alles übereinstimmen.

Wie in den Kommentaren darauf hingewiesen, ist dies im Wesentlichen ein Wrapper für unlist(sapply(search(), ls, all.names = T)). Dies ist nützlich, um zu verstehen, da es hilfreich sein kann, wenn Sie beispielsweise nur einen bestimmten angehängten Namespace durchsuchen möchten.

Verwandte Themen