Was bedeutet "nicht ausgeführt" auf R-Hilfeseiten?


112

Manchmal wird auf einer R-Hilfeseite in Kommentaren der Ausdruck "nicht ausgeführt" angezeigt. Überprüfen Sie dies auf der Hilfeseite für "with ()":

Examples
require(stats); require(graphics)
#examples from glm:
**## Not run:** 
library(MASS)
with(anorexia, {
    anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
                    family = gaussian)
    summary(anorex.1)
})
## End(**Not run**)

Was bedeutet das "nicht ausgeführt" im Beispielcode?


32
nur ein verwandter Tipp. Sie können den Beispielcode ausführen, indem Sie "example (glm)" ausgeben.
Eduardo Leoni

4
Das ist ein guter Tipp. Und ich würde wetten, dass die überwiegende Mehrheit der R-Benutzer sich dessen nicht bewusst ist.
Dan Goldstein

1
Beachten Sie jedoch, dass Beispiel (fn) immer noch keinen Beispielcode enthält, der indontRun
tim

außer wenn Sie den run.dontrunParameter aufTRUE
Moody_Mudskipper

Antworten:


77

"nicht ausführen" enthält Code, der in der exampleFunktion nicht ausgeführt werden sollte (z. B. zeitaufwändige Codeteile, Benutzerinteraktion, ...).

siehe zB ?example:

Wie im Handbuch Schreiben von R-Erweiterungen beschrieben , kann der Autor der Hilfeseite Teile der Beispiele für zwei Ausnahmeregeln markieren

  • 'dontrun' enthält Code, der nicht ausgeführt werden sollte.

  • 'dontshow' enthält Code, der auf Hilfeseiten nicht sichtbar ist, aber sowohl von den Tools zur Paketprüfung als auch von der Funktion 'example ()' ausgeführt wird. Dies war zuvor "nur Teston", und dieses Formular wird immer noch akzeptiert.


3
... woher wusste ich nichts von dieser Funktion?
Matt Parker

5
Es ist nicht nur zeitaufwändiger Code, der normalerweise in einem \ dontrun {} abgelegt wird. Code, der Benutzereingaben erfordert, muss sich ebenfalls in dontrun befinden, sonst wird er nicht übergebenR CMD check
Dason

2
Oder: Code, der von einem Paket abhängt, das möglicherweise nicht auf dem Computer des Benutzers installiert ist. Es gibt viele, viele, viele Gründe, \ dontrun {} zu verwenden
Jason

25

Im Handbuch "Writing R Extensions" wird im Abschnitt über \ examples {...} das gesagt

Sie können \ dontrun {} für Text verwenden, der nur angezeigt, aber nicht ausgeführt werden soll, und \ dontshow {} für zusätzliche Befehle zum Testen, die Benutzern nicht angezeigt werden sollen, aber anhand von example () ausgeführt werden.

Wenn Sie ein Paket erstellen, wird der gesamte Code in \ dontrun {} Closure in der Hilfe als angezeigt

## Not run:
...
## End(**Not run**)

bearbeiten: Diese Antwort war früher.


15

Dies fügt hinzu \donttest{}und wird (wörtlich) aus @ hadleys R-Paketen entnommen .

Zur Veranschaulichung ist es jedoch häufig nützlich, Code einzuschließen, der einen Fehler verursacht. \dontrun{}Mit dieser Option können Sie Code in das Beispiel aufnehmen, der niemals verwendet wird. Es gibt zwei weitere spezielle Befehle. \dontshow{}wird ausgeführt, aber nicht auf der Hilfeseite angezeigt: Dies kann für informelle Tests hilfreich sein. \donttest{}wird in Beispielen ausgeführt, jedoch nicht automatisch in der R CMD-Prüfung. Dies ist nützlich, wenn Sie Beispiele haben, deren Ausführung lange dauert. Die Optionen sind unten zusammengefasst.

Command      example    help       R CMD check
\dontrun{}                 x
\dontshow{}       x                          x
\donttest{}       x        x

2
Beachten Sie, dass Donttest jetzt getestet wird
Tyler Rinker

1
Müssen Sie für die Paketübermittlung zusätzliche Kommentare in der .Rd haben, die das Weglassen des Codeblocks rechtfertigen? Ich hatte eine Paketfehlerprüfung aufgrund eines \ donttest {} -Beispiels und frage mich, ob es einfach ist, es in \ dontrun {} zu ändern. Die Funktion dient zum Herunterladen von Daten von einem FTP und der CRAN-Kommentar lautet: "Dies wird in den .Rd-Dateien nicht kommentiert. Beachten Sie, dass example () diese Abschnitte ausführt."
Jeffrey Evans

Ja, so einfach sollte es sein.
Tyler Rinker

@TylerRinker Sie meinen, die Funktion wird als funktionsfähig überprüft oder der Code mit in @donttest {} wird jetzt von CRAN ausgeführt, wenn Überprüfungen durchgeführt werden?
Tim

2
Ja, hier ist ein Zitat aus Hadleys Buch: "Zur Veranschaulichung ist es oft nützlich, Code einzufügen, der einen Fehler verursacht. \ Dontrun {} ermöglicht es Ihnen, Code in das Beispiel aufzunehmen, das nicht ausgeführt wird. (Früher waren Sie es \ donttest {} kann für einen ähnlichen Zweck verwendet werden, wird jedoch nicht mehr empfohlen, da es tatsächlich getestet wird.) "
Tyler Rinker

5

C & P aus Kapitel 5.4 (R-Dokumentationsdateien) des MUSS ZU LESEN Erstellen von R-Paketen: Ein Tutorial von Friedrich Leisch:

Der Beispielabschnitt sollte ausführbaren R-Code enthalten, und das automatische Ausführen des Codes ist Teil der Überprüfung eines Pakets. Für die Beispiele gibt es zwei spezielle Markup-Befehle:

dontrun : Alles in \ dontrun {} wird nicht von den Tests oder example () ausgeführt. Dies ist nützlich, z. B. für interaktive Funktionen, Funktionen, die auf das Internet zugreifen usw. Verwenden Sie es nicht, um Ihnen das Leben zu erleichtern, indem Sie Beispiele nennen, die nicht ausgeführt werden können.


3

Das kanonische Beispiel hier könnte sich auf der Hilfeseite befinden für rm:

## Not run: 
## remove (almost) everything in the working environment.
## You will get no warning, so don't do this unless you are really sure.
rm(list = ls())

## End(Not run)

Wenn dies laufen würde, hätte es natürlich unerwünschte Auswirkungen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.