2009-08-12 12 views
13

Nehmen wir an, Sie haben diese Daten in R, und Sie möchten eine Frage auf Stackoverflow stellen. Damit andere Ihnen am besten helfen können, wäre es schön, wenn Sie eine Kopie Ihres Objekts (Datenrahmen, Vektor usw.) zur Verfügung hätten.Wie exportiert man die Definition eines R-Objekts in einen Klartext, so dass andere es neu erstellen können?

Lassen Sie uns sagen, dass Ihre Daten in einem Datenrahmen site.data

> site.data 
    site year  peak 
1 ALBEN 5 101529.6 
2 ALBEN 10 117483.4 
3 ALBEN 20 132960.9 
8 ALDER 5 6561.3 
9 ALDER 10 7897.1 
10 ALDER 20 9208.1 
15 AMERI 5 43656.5 
16 AMERI 10 51475.3 
17 AMERI 20 58854.4 

Wie Sie es verpacken genannt ist, so dass die Benutzer genau die Daten neu erstellen können, wie Sie es haben?

Sie möchten dies tun, ohne dass Menschen eine Textdatei herunterladen und importieren.

(Hinweis: Diese Daten von einem Beispiel des Revolutions Blog subsetted)

+0

sehr schlau ausführen, um dies hier zu bekommen. –

Antwort

19

Der dput Befehl schreibt eine ASCII-Darstellung. Wenn anstelle eines Dateinamens Sie setzen „site.data“ es es an die Konsole es

> dput(site.data,"") 
structure(list(site = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L), .Label = c("ALBEN", "ALDER", "AMERI"), class = "factor"), 
    year = c(5L, 10L, 20L, 5L, 10L, 20L, 5L, 10L, 20L), peak = c(101529.6, 
    117483.4, 132960.9, 6561.3, 7897.1, 9208.1, 43656.5, 51475.3, 
    58854.4)), .Names = c("site", "year", "peak"), row.names = c(1L, 
2L, 3L, 8L, 9L, 10L, 15L, 16L, 17L), class = "data.frame") 

einfach die Struktur kopieren und nach setzen schreiben wird „=“ in Ihrem Beispiel-Code und die Menschen werden in der Lage sein, die Daten neu erstellen Rahmen genau wie Sie es haben.

6

In Ihrem ursprünglichen Beispiel funktioniert die Art und Weise, wie Sie Ihre Daten im Spaltenformat eingefügt haben, problemlos. Ich kopierte einfach Ihren Text von der Webseite, und tat dies (mit O X, so habe ich den schönen Befehl „Einfügen“):

> site.data <- read.table(pipe("pbpaste")) 

Für Spielzeug Daten wie etwas als Testfall geschrieben, dies ist oft die bester Ansatz. Um besonders präzise zu sein, ist dput() gut, wie dgoldst sagt.

3

Eine andere Möglichkeit, ähnlich wie bei Ken, ist die Verwendung der Zwischenablage (unter Windows und möglicherweise Linux). Ich würde Ihren Code kopieren und

> site.data <- read.table("clipboard", header=T) 
> site.data 
    site year  peak 
1 ALBEN 5 101529.6 
2 ALBEN 10 117483.4 
3 ALBEN 20 132960.9 
8 ALDER 5 6561.3 
9 ALDER 10 7897.1 
10 ALDER 20 9208.1 
15 AMERI 5 43656.5 
16 AMERI 10 51475.3 
17 AMERI 20 58854.4