Wenn Sie die Leistung mit Kollegen besprechen, unterrichten, einen Fehlerbericht senden oder nach Anleitungen zu Mailinglisten und hier zum Stapelüberlauf suchen, wird häufig ein reproduzierbares Beispiel gefragt und ist immer hilfreich.
Was sind Ihre Tipps, um ein hervorragendes Beispiel zu erstellen? Wie fügen Sie Datenstrukturen ein?rin einem Textformat? Welche weiteren Informationen sollten Sie angeben?
Gibt es noch andere Tricks zusätzlich zur Verwendung dput()
, dump()
oder structure()
? Wann sollten Sie library()
oder require()
Aussagen einschließen ? Welche reservierten Worte sollte man vermeiden, zusätzlich zu c
, df
, data
etc.?
Wie macht man einen tollen r reproduzierbares Beispiel?
Antworten:
Ein minimal reproduzierbares Beispiel besteht aus folgenden Elementen:
set.seed()
) für die Reproduzierbarkeit 1Beispiele für gute Beispiele mit minimaler Reproduzierbarkeit finden Sie in den Hilfedateien der von Ihnen verwendeten Funktion. Im Allgemeinen erfüllt der gesamte dort angegebene Code die Anforderungen eines minimal reproduzierbaren Beispiels: Daten werden bereitgestellt, minimaler Code wird bereitgestellt und alles kann ausgeführt werden. Schauen Sie sich auch Fragen zu Stack Overflow mit vielen positiven Stimmen an.
Erstellen eines minimalen Datensatzes
In den meisten Fällen kann dies einfach durch Bereitstellen eines Vektor- / Datenrahmens mit einigen Werten erfolgen. Oder Sie können eines der integrierten Datasets verwenden, die in den meisten Paketen enthalten sind.
Eine umfassende Liste der integrierten Datensätze finden Sie mit
library(help = "datasets")
. Zu jedem Datensatz gibt es eine kurze Beschreibung. Weitere Informationen erhalten Sie beispielsweise,?mtcars
wenn 'mtcars' einer der Datensätze in der Liste ist. Andere Pakete enthalten möglicherweise zusätzliche Datensätze.Das Erstellen eines Vektors ist einfach. Manchmal ist es notwendig, etwas Zufälligkeit hinzuzufügen, und es gibt eine ganze Reihe von Funktionen, um dies zu erreichen.
sample()
kann einen Vektor randomisieren oder einen zufälligen Vektor mit nur wenigen Werten angeben.letters
ist ein nützlicher Vektor, der das Alphabet enthält. Dies kann zur Herstellung von Faktoren verwendet werden.Einige Beispiele:
x <- rnorm(10)
für Normalverteilung,x <- runif(10)
für Gleichverteilung, ...x <- sample(1:10)
für Vektor 1:10 in zufälliger Reihenfolge.x <- sample(letters[1:4], 20, replace = TRUE)
Für Matrizen kann man
matrix()
zB verwenden:Das Erstellen von Datenrahmen kann mit erfolgen
data.frame()
. Man sollte darauf achten, die Einträge im Datenrahmen zu benennen und nicht zu kompliziert zu machen.Ein Beispiel :
Für einige Fragen können bestimmte Formate benötigt werden. Für diese kann man eine der vorgesehenen Verwendung
as.someType
Funktionen:as.factor
,as.Date
,as.xts
, ... Diese in Kombination mit dem Vektor und / oder Datenrahmen Tricks.Kopieren Sie Ihre Daten
Wenn Sie einige Daten, die zu schwierig sein würde , mit diesen Tipps zu konstruieren, dann können Sie immer einen Teil Ihrer ursprünglichen Daten machen, verwenden
head()
,subset()
oder die Indizes. Verwenden Sie danndput()
, um uns etwas zu geben, das sofort in R eingefügt werden kann:Wenn Ihr Datenrahmen einen Faktor mit vielen Ebenen enthält, kann die
dput
Ausgabe unhandlich sein, da weiterhin alle möglichen Faktorstufen aufgelistet werden, auch wenn sie nicht in der Teilmenge Ihrer Daten vorhanden sind. Um dieses Problem zu lösen, können Sie diedroplevels()
Funktion verwenden. Beachten Sie unten, wie Arten ein Faktor mit nur einer Ebene sind:Bei der Verwendung
dput
möchten Sie möglicherweise auch nur relevante Spalten einschließen:Eine weitere Einschränkung
dput
ist, dass es nicht für verschlüsseltedata.table
Objekte oder für gruppiertetbl_df
(Klassegrouped_df
) von funktioniertdplyr
. In diesen Fällen können Sie vor der Freigabe wieder in einen regulären Datenrahmen konvertierendput(as.data.frame(my_data))
.Im schlimmsten Fall können Sie eine Textdarstellung angeben, die mit den folgenden
text
Parametern eingelesen werden kannread.table
:Minimalen Code produzieren
Dies sollte der einfache Teil sein, ist es aber oft nicht. Was Sie nicht tun sollten, ist:
Was Sie tun sollten, ist:
library()
)unlink()
)op <- par(mfrow=c(1,2)) ...some code... par(op)
)Geben Sie zusätzliche Informationen
In den meisten Fällen reichen nur die R-Version und das Betriebssystem aus. Wenn Konflikte mit Paketen auftreten,
sessionInfo()
kann es wirklich hilfreich sein , die Ausgabe von zu geben. Wenn Sie über Verbindungen zu anderen Anwendungen sprechen (sei es über ODBC oder irgendetwas anderes), sollten Sie auch Versionsnummern für diese und, wenn möglich, auch die erforderlichen Informationen zum Setup angeben.Wenn Sie R in R Studio mit
rstudioapi::versionInfo()
ausführen , kann es hilfreich sein, Ihre RStudio-Version zu melden.Wenn Sie ein Problem mit einem bestimmten Paket haben, können Sie die Version des Pakets bereitstellen, indem Sie die Ausgabe von angeben
packageVersion("name of the package")
.1 Hinweis: Die Ausgabe von
set.seed()
unterscheidet sich zwischen R> 3.6.0 und früheren Versionen. Geben Sie an, welche R-Version Sie für den Zufallsprozess verwendet haben, und wundern Sie sich nicht, wenn Sie bei der Beantwortung alter Fragen leicht unterschiedliche Ergebnisse erhalten. Um in solchen Fällen das gleiche Ergebnis zu erzielen, können Sie dieRNGversion()
-funktion vorher verwendenset.seed()
(zB :)RNGversion("3.5.2")
.quelle
dput
wenn der Datenrahmen sehr groß ist und das Problem in der Mitte des Datenrahmens generiert wird? Gibt es eine Möglichkeit,dput
den mittleren Datenabschnitt zu reproduzieren, z. B. die Zeilen 60 bis 70?tmp <- mydf[50:70,]
Gefolgt vondput(mydf)
. Wenn der Datenrahmen wirklich groß ist, versuchen Sie, das Problem zu isolieren, und senden Sie einfach die wenigen Zeilen, die das Problem verursachen.head
oderdput
auf Stufe N zu beschränken? Ich versuche, ein reproduzierbares Beispiel zu finden, und meine Daten sind eine Liste von Datenrahmen. Diesdput(head(myDataObj))
scheint also nicht ausreichend zu sein, da eine Ausgabedatei mit einer Größe von 14 MB generiert wird.(Hier ist mein Rat von Wie man ein reproduzierbares Beispiel schreibt . Ich habe versucht, es kurz, aber süß zu machen.)
Wie schreibe ich ein reproduzierbares Beispiel?
Sie erhalten höchstwahrscheinlich gute Hilfe bei Ihrem R-Problem, wenn Sie ein reproduzierbares Beispiel angeben. Ein reproduzierbares Beispiel ermöglicht es einer anderen Person, Ihr Problem durch einfaches Kopieren und Einfügen von R-Code neu zu erstellen.
Es gibt vier Dinge, die Sie einschließen müssen, um Ihr Beispiel reproduzierbar zu machen: erforderliche Pakete, Daten, Code und eine Beschreibung Ihrer R-Umgebung.
Pakete sollten oben im Skript geladen werden, damit Sie leicht erkennen können, welche im Beispiel benötigt werden.
Der einfachste Weg, Daten in eine E-Mail- oder Stapelüberlauffrage aufzunehmen, besteht darin
dput()
, den R-Code zu generieren, um ihn neu zu erstellen. Um beispielsweise dasmtcars
Dataset in R neu zu erstellen , führen Sie die folgenden Schritte aus:dput(mtcars)
in R.mtcars <-
fügen Sie es ein.Nehmen Sie sich etwas Zeit, um sicherzustellen, dass Ihr Code für andere leicht lesbar ist:
Stellen Sie sicher, dass Sie Leerzeichen verwendet haben und Ihre Variablennamen präzise, aber informativ sind
Verwenden Sie Kommentare, um anzugeben, wo Ihr Problem liegt
Geben Sie Ihr Bestes, um alles zu entfernen, was nicht mit dem Problem zusammenhängt.
Je kürzer Ihr Code ist, desto leichter ist es zu verstehen.
Fügen Sie die Ausgabe von
sessionInfo()
in einen Kommentar in Ihren Code ein. Dies fasst Ihre R-Umgebung zusammen und erleichtert die Überprüfung, ob Sie ein veraltetes Paket verwenden.Sie können überprüfen, ob Sie tatsächlich ein reproduzierbares Beispiel erstellt haben, indem Sie eine neue R-Sitzung starten und Ihr Skript einfügen.
Bevor Sie Ihren gesamten Code in eine E-Mail einfügen , sollten Sie ihn auf Gist Github ablegen . Dadurch wird Ihrem Code eine schöne Syntaxhervorhebung verliehen, und Sie müssen sich keine Sorgen machen, dass das E-Mail-System etwas beschädigt.
quelle
reprex
intidyverse
ist ein gutes Paket für die Herstellung von minimalen, reproduzierbaren Beispiel: github.com/tidyverse/reprexPersönlich bevorzuge ich "Ein" -Liner. Etwas in der Richtung:
Die Datenstruktur sollte die Idee des Autorenproblems imitieren und nicht die genaue wörtliche Struktur. Ich weiß es wirklich zu schätzen, wenn Variablen meine eigenen Variablen nicht überschreiben oder Gott verbietet, Funktionen (wie
df
).Alternativ könnte man ein paar Ecken abschneiden und auf einen bereits vorhandenen Datensatz verweisen, etwa:
Vergessen Sie nicht, spezielle Pakete zu erwähnen, die Sie möglicherweise verwenden.
Wenn Sie versuchen, etwas auf größeren Objekten zu demonstrieren, können Sie es versuchen
Wenn Sie über das
raster
Paket mit räumlichen Daten arbeiten , können Sie zufällige Daten generieren. Viele Beispiele finden Sie in der Paketvignette, aber hier ist ein kleines Nugget.Wenn Sie ein räumliches Objekt benötigen, wie es in implementiert ist
sp
, können Sie einige Datensätze über externe Dateien (wie ESRI-Shapefile) in "räumlichen" Paketen abrufen (siehe Raumansicht in Aufgabenansichten).quelle
sample
oderrunif
es ist umsichtigset.seed
. Zumindest ist dies der Vorschlag, den ich erhalten habe, als ich Beispiele für Stichproben oder Zufallszahlengenerierung erstellt habe.runif
odersample
nicht verwirrt sein dass sie nicht die gleichen Daten bekommen können.Inspiriert von diesem Beitrag verwende ich jetzt eine praktische Funktion,
reproduce(<mydata>)
wenn ich in StackOverflow posten muss.SCHNELLE ANWEISUNGEN
Wenn
myData
der Name Ihres zu reproduzierenden Objekts lautet, führen Sie in R Folgendes aus:Einzelheiten:
Diese Funktion ist ein intelligenter Wrapper für
dput
und führt Folgendes aus:dput
AusgabeobjName <- ...
damit es leicht kopiert und eingefügt werden kann, aber ...Die Quelle finden Sie hier:
Beispiel:
DF ist ungefähr 100 x 102. Ich möchte 10 Zeilen und einige spezifische Spalten abtasten
Gibt die folgende Ausgabe:
Beachten Sie auch, dass sich die gesamte Ausgabe in einer schönen, langen Zeile befindet, nicht in einem hohen Absatz aus zerhackten Zeilen. Dies erleichtert das Lesen von SO-Fragen und das Kopieren und Einfügen.
Update Okt 2013:
Sie können jetzt angeben, wie viele Zeilen Textausgabe benötigt werden (dh was Sie in StackOverflow einfügen). Verwenden Sie dazu das
lines.out=n
Argument. Beispiel:reproduce(DF, cols=c(1:3, 17, 23), lines.out=7)
Ausbeuten:quelle
Hier ist eine gute Anleitung .
Der wichtigste Punkt ist: Stellen Sie einfach sicher, dass Sie einen kleinen Code erstellen, den wir ausführen können, um das Problem zu ermitteln . Eine nützliche Funktion hierfür ist
dput()
, aber wenn Sie sehr große Datenmengen haben, möchten Sie möglicherweise einen kleinen Beispieldatensatz erstellen oder nur die ersten 10 Zeilen oder so verwenden.BEARBEITEN:
Stellen Sie außerdem sicher, dass Sie selbst festgestellt haben, wo das Problem liegt. Das Beispiel sollte kein vollständiges R-Skript mit "In Zeile 200 liegt ein Fehler vor" sein. Wenn Sie die Debugging-Tools in R (ich liebe
browser()
) und Google verwenden, sollten Sie in der Lage sein, das Problem wirklich zu identifizieren und ein triviales Beispiel zu reproduzieren, in dem dasselbe schief geht.quelle
Die R-Help-Mailingliste enthält einen Posting-Leitfaden, der sowohl das Stellen als auch das Beantworten von Fragen umfasst, einschließlich eines Beispiels zum Generieren von Daten:
Das Wort klein ist besonders wichtig. Sie sollten ein minimal reproduzierbares Beispiel anstreben , was bedeutet, dass die Daten und der Code so einfach wie möglich sein sollten, um das Problem zu erklären.
BEARBEITEN: Hübscher Code ist leichter zu lesen als hässlicher Code. Verwenden Sie einen Styleguide .
quelle
Seit R.2.14 (ich denke) können Sie Ihre Datentextdarstellung direkt an Folgendes weitergeben
read.table
:quelle
Manchmal ist das Problem mit kleineren Daten wirklich nicht reproduzierbar, egal wie sehr Sie es versuchen, und es tritt nicht mit synthetischen Daten auf (obwohl es nützlich ist zu zeigen, wie Sie synthetische Datensätze erstellt haben, die das Problem nicht reproduzierten, weil es schließt einige Hypothesen aus).
Wenn Sie beides nicht können, müssen Sie wahrscheinlich einen Berater beauftragen, um Ihr Problem zu lösen ...
edit : Zwei nützliche SO-Fragen zur Anonymisierung / Verschlüsselung:
quelle
fitdistr
undfitdistrplus
.Die bisherigen Antworten sind offensichtlich gut für den Teil der Reproduzierbarkeit. Dies dient lediglich der Klarstellung, dass ein reproduzierbares Beispiel nicht der einzige Bestandteil einer Frage sein kann und sollte. Vergessen Sie nicht zu erklären, wie es aussehen soll und welche Konturen Ihr Problem aufweist, und nicht nur, wie Sie bisher versucht haben, dorthin zu gelangen. Code ist nicht genug; Du brauchst auch Worte.
Hier ist ein reproduzierbares Beispiel dafür, was zu vermeiden ist (anhand eines realen Beispiels wurden Namen geändert, um die Unschuldigen zu schützen):
Das Folgende sind Beispieldaten und ein Teil der Funktion, mit denen ich Probleme habe.
Wie kann ich das erreichen?
quelle
Ich habe eine sehr einfache und effiziente Möglichkeit, ein R-Beispiel zu erstellen, das oben nicht erwähnt wurde. Sie können zunächst Ihre Struktur definieren. Zum Beispiel,
Dann können Sie Ihre Daten manuell eingeben. Dies ist eher für kleinere als für große Beispiele effizient.
quelle
dput(mydata)
for (d in data) {...}
.So erstellen Sie schnell eine
dput
Daten Sie die Daten einfach in Ihre Zwischenablage kopieren und in R Folgendes ausführen:für Daten in Excel:
für Daten in einer txt-Datei:
Sie können
sep
diese bei Bedarf ändern . Dies funktioniert natürlich nur, wenn sich Ihre Daten in der Zwischenablage befinden.quelle
Richtlinien:
Ihr Hauptziel bei der Erstellung Ihrer Fragen sollte es sein, den Lesern das Verständnis und die Reproduktion Ihres Problems auf ihren Systemen so einfach wie möglich zu machen. Um dies zu tun:
Dies erfordert zwar einige Arbeit, scheint jedoch ein fairer Kompromiss zu sein, da Sie andere bitten, für Sie zu arbeiten.
Daten bereitstellen:
Eingebaute Datensätze
Die mit Abstand beste Option besteht darin, sich auf integrierte Datensätze zu verlassen. Dies macht es für andere sehr einfach, an Ihrem Problem zu arbeiten. Geben Sie
data()
an der Eingabeaufforderung R ein, um zu sehen, welche Daten für Sie verfügbar sind. Einige klassische Beispiele:iris
mtcars
ggplot2::diamonds
(externes Paket, aber fast jeder hat es)In dieser SO-Qualitätssicherung erfahren Sie, wie Sie Datensätze finden, die für Ihr Problem geeignet sind.
Wenn Sie Ihr Problem umformulieren können, um die integrierten Datensätze zu verwenden, erhalten Sie mit größerer Wahrscheinlichkeit gute Antworten (und positive Stimmen).
Selbst generierte Daten
Wenn Ihr Problem sehr spezifisch für einen Datentyp ist, der nicht in den vorhandenen Datensätzen enthalten ist, geben Sie den R-Code an, der den kleinstmöglichen Datensatz generiert, in dem sich Ihr Problem manifestiert. Zum Beispiel
Jetzt kann jemand, der versucht, meine Frage zu beantworten, diese beiden Zeilen kopieren / einfügen und sofort mit der Arbeit an dem Problem beginnen.
dput
Als letzten Ausweg können Sie
dput
ein Datenobjekt in R-Code umwandeln (zdput(myData)
. B. ). Ich sage als "letzter Ausweg", weil die Ausgabe vondput
oft ziemlich unhandlich ist, beim Kopieren und Einfügen ärgerlich ist und den Rest Ihrer Frage verdeckt.Erwartete Ausgabe bereitstellen:
Jemand hat einmal gesagt:
Wenn Sie etwas wie "Ich habe erwartet, dass dieses Ergebnis erzielt wird" hinzufügen können:
Bei Ihrer Frage verstehen die Leute viel eher schnell, was Sie versuchen zu tun. Wenn Ihr erwartetes Ergebnis groß und unhandlich ist, haben Sie wahrscheinlich nicht genug darüber nachgedacht, wie Sie Ihr Problem vereinfachen können (siehe weiter unten).
Erklären Sie Ihr Problem kurz und bündig
Die Hauptsache ist, Ihr Problem so weit wie möglich zu vereinfachen, bevor Sie Ihre Frage stellen. Die Neuformulierung des Problems, um mit den integrierten Datensätzen zu arbeiten, wird in dieser Hinsicht sehr hilfreich sein. Sie werden auch oft feststellen, dass Sie Ihr eigenes Problem beantworten, indem Sie den Vereinfachungsprozess durchlaufen.
Hier einige Beispiele für gute Fragen:
In beiden Fällen liegen die Probleme des Benutzers mit ziemlicher Sicherheit nicht in den einfachen Beispielen, die sie liefern. Vielmehr abstrahierten sie die Natur ihres Problems und wandten es auf einen einfachen Datensatz an, um ihre Frage zu stellen.
Warum noch eine Antwort auf diese Frage?
Diese Antwort konzentriert sich auf das, was ich für die beste Vorgehensweise halte: Verwenden Sie integrierte Datensätze und geben Sie das, was Sie als Ergebnis erwarten, in minimaler Form an. Die wichtigsten Antworten konzentrieren sich auf andere Aspekte. Ich erwarte nicht, dass diese Antwort an Bedeutung gewinnt. Dies ist nur hier, damit ich in Kommentaren zu Fragen von Neulingen darauf verlinken kann.
quelle
Reproduzierbarer Code ist der Schlüssel, um Hilfe zu erhalten. Es gibt jedoch viele Benutzer, die skeptisch sind, auch nur einen Teil ihrer Daten einzufügen. Zum Beispiel könnten sie mit sensiblen Daten oder mit Originaldaten arbeiten, die zur Verwendung in einem Forschungsbericht gesammelt wurden. Aus irgendeinem Grund dachte ich, es wäre schön, eine praktische Funktion zum "Verformen" meiner Daten zu haben, bevor sie öffentlich eingefügt werden. Die
anonymize
Funktion aus dem PaketSciencesPo
ist sehr albern, aber für mich funktioniert es gut mit derdput
Funktion.Dann anonymisiere ich es:
Möglicherweise möchten Sie auch einige Variablen anstelle der gesamten Daten abtasten, bevor Sie den Befehl Anonymisierung und dput anwenden.
quelle
Oft benötigen Sie einige Daten für ein Beispiel, möchten jedoch nicht Ihre genauen Daten veröffentlichen. Um einen vorhandenen data.frame in einer etablierten Bibliothek zu verwenden, importieren Sie ihn mit dem Befehl data.
z.B,
und dann das Problem machen
quelle
mtcars
undiris
Datensätze) benötigen dendata
Aufruf nicht, um verwendet zu werden.Wenn Sie einen großen Datensatz haben, der nicht einfach mit dem Skript erstellt werden kann
dput()
, senden Sie Ihre Daten an den Pastebin und laden Sie sie mitread.table
:Inspiriert von @Henrik .
quelle
Ich entwickle das Wakefield- Paket , um dieses Bedürfnis zu befriedigen , manchmal schnell reproduzierbare Daten auszutauschen
dput
Austausch funktioniert es gut für kleinere Datensätze, aber viele der Probleme, mit denen wir uns befassen, sind viel größer. Das Teilen eines so großen Datensatzes überdput
ist unpraktisch.Über:
Wakefield kann der Benutzer nur minimalen Code zur Reproduktion von Daten . Der Benutzer legt
n
(Anzahl der Zeilen) fest und gibt eine beliebige Anzahl von voreingestellten Variablenfunktionen an (derzeit sind es 70), die reale Daten nachahmen (z. B. Geschlecht, Alter, Einkommen usw.).Installation:
Derzeit (2015.06.11), wakefield ist ein Paket GitHub aber zu CRAN geht schließlich nach Unit - Tests geschrieben werden. Verwenden Sie zur schnellen Installation Folgendes:
Beispiel:
Hier ist ein Beispiel:
Dies erzeugt:
quelle
Wenn Sie ein oder mehr
factor
Variable (n) in Ihren Daten , die Sie mit reproduzierbarer machen wollendput(head(mydata))
, sollten Sie erwägen ,droplevels
um es, so dass das Niveau der Faktoren , die nicht in der minimierten Datensatz nicht in Ihrem enthalten ist ,dput
ausgegeben, um zu Machen Sie das Beispiel minimal :quelle
Ich frage mich, ob ein http://old.r-fiddle.org/-Link eine sehr gute Möglichkeit sein könnte, ein Problem zu teilen. Es erhält eine eindeutige ID wie und man könnte sogar darüber nachdenken, es in SO einzubetten.
quelle
Bitte fügen Sie Ihre Konsolenausgaben nicht wie folgt ein:
Wir können es nicht direkt kopieren und einfügen.
Um Fragen und Antworten richtig reproduzierbar zu machen, versuchen Sie,
+
& zu entfernen,>
bevor Sie sie veröffentlichen, und geben Sie folgende#
Ausgaben und Kommentare ein:Wenn Sie eine Funktion aus einem bestimmten Paket verwendet haben, erwähnen Sie diese Bibliothek.
quelle
>
und fügen Sie es#
manuell hinzu oder gibt es eine automatische Möglichkeit, dies zu tun?>
manuell. Aber zusätzlich#
benutze ich dieCtrl+Shift+C
Verknüpfung imRStudio
Editor.Sie können dies mit reprex tun .
Wie mt1022 feststellte , ist "... ein gutes Paket zur Herstellung eines minimalen, reproduzierbaren Beispiels " reprex " von tidyverse ".
Laut Tidyverse :
Ein Beispiel finden Sie auf der tidyverse -Website.
Ich denke, dies ist der einfachste Weg , um ein reproduzierbares Beispiel zu erstellen.
quelle
Abgesehen von allen oben genannten Antworten, die ich sehr interessant fand, könnte es manchmal sehr einfach sein, wie hier diskutiert wird: WIE MAN EIN MINDESTREPRODUZIERBARES BEISPIEL MACHT, UM HILFE BEI R ZU ERHALTEN
Es gibt viele Möglichkeiten, einen Zufallsvektor zu erstellen. Erstellen Sie einen 100-Zahlen-Vektor mit Zufallswerten in R, gerundet auf 2 Dezimalstellen oder einer Zufallsmatrix in R.
Beachten Sie, dass es manchmal aus verschiedenen Gründen wie Dimension usw. sehr schwierig ist, bestimmte Daten gemeinsam zu nutzen. Alle oben genannten Antworten sind jedoch großartig und sehr wichtig zu denken und zu verwenden, wenn ein Beispiel für reproduzierbare Daten erstellt werden soll. Beachten Sie jedoch, dass es gut ist, dem Datenbeispiel einige Informationen hinzuzufügen, um Daten so repräsentativ wie das Original zu machen (falls das OP die Originaldaten nicht gemeinsam nutzen kann) (wenn wir die Daten mydf1 nennen).
Darüber hinaus sollte man den Typ, die Länge und die Attribute von Daten kennen, bei denen es sich um Datenstrukturen handeln kann
quelle
Hier sind einige meiner Vorschläge:
dput
, damit andere Ihnen leichter helfen könneninstall.package()
sei denn, es ist wirklich notwendig, die Leute werden verstehen, wenn Sie nurrequire
oder verwendenlibrary
Versuche prägnant zu sein,
All dies ist Teil eines reproduzierbaren Beispiels.
quelle
dput()
wurde bereits erwähnt, und vieles davon wiederholt nur die Standard-SO-Richtlinien.install.package
Funktion im Beispiel, das (meiner Meinung nach) nicht wirklich notwendig ist. Darüber hinaus würde die Verwendung des Standard-R-Datensatzes die Reproduzierbarkeit erleichtern. Die SO-Richtlinien haben zu diesen Themen nichts spezielles gesagt. Außerdem sollte es meine Meinung abgeben, und diese sind die, denen ich am meisten begegnet bin.Es ist eine gute Idee, Funktionen aus dem
testthat
Paket zu verwenden, um zu zeigen, was Sie erwarten. Auf diese Weise können andere Personen Ihren Code ändern, bis er fehlerfrei ausgeführt wird. Dies entlastet diejenigen, die Ihnen helfen möchten, da sie Ihre Textbeschreibung nicht entschlüsseln müssen. Zum Beispielist klarer als "Ich denke, x würde 1,23 für y gleich oder größer als 10 und 3,21 sonst ergeben, aber ich habe kein Ergebnis erhalten". Selbst in diesem albernen Beispiel denke ich, dass der Code klarer ist als die Wörter. Mithilfe dieser Funktion kann sich
testthat
Ihr Helfer auf den Code konzentrieren, was Zeit spart. Auf diese Weise können sie erkennen, dass sie Ihr Problem gelöst haben, bevor sie es veröffentlichenquelle