2009-08-12 9 views
13

Supponiamo di avere questi dati in R e di voler pubblicare una domanda su StackOverflow. Per gli altri per aiutarti meglio, sarebbe bello se potessero avere una copia del tuo oggetto (dataframe, vettoriale, ecc.) Con cui lavorare.Come esportare la definizione di un oggetto R in testo normale in modo che altri possano ricrearla?

Diciamo che i dati sono in un frame di dati chiamato 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 

Come sono imballati in su in modo che gli utenti possono ricreare i dati esattamente come lo avete?

Si desidera eseguire questa operazione senza che le persone scarichino un file di testo e lo importino.

(Nota: Questi dati subsetted da un esempio del blog giri)

+0

molto intelligente per ottenere questo qui. –

risposta

19

Il comando dput scrive una rappresentazione ASCII. Se invece di un nome di file si mette "" sarà scriverlo alla console

> 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") 

basta copiare la struttura e metterlo dopo "site.data =" nel codice di esempio e la gente sarà in grado di ricreare i dati inquadra esattamente come lo hai tu.

6

In realtà, nell'esempio originale, il modo in cui hai incollato i dati in formato di colonna funziona perfettamente. Io ho semplicemente copiato il testo dalla pagina web, e fatto questo (utilizzando OS X in modo ho la bella comando "incolla"):

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

Per i dati giocattolo come qualcosa di scritto come un banco di prova, questo è spesso il approccio migliore. Per essere estremamente preciso, dput() è buono, come dice dggoldst.

3

Un altro modo, simile a quello di Ken, è quello di utilizzare gli appunti (su Windows e, eventualmente, su Linux). Vorrei copiare il tuo codice ed eseguire

> 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 
Problemi correlati