2009-08-12 9 views
13

Digamos que tiene estos datos en R y desea publicar una pregunta en stackoverflow. Para que otros lo ayuden mejor, sería bueno si pudieran tener una copia de su objeto (dataframe, vector, etc.) con la que trabajar.Cómo exportar la definición de un objeto R a texto plano para que otros puedan volver a crearlo?

Digamos que los datos están en una trama de datos llamada 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 

¿Cómo empaquetar hacia arriba de manera que los usuarios pueden recrear los datos tal y como lo tienes?

Desea hacer esto sin que las personas descarguen un archivo de texto e lo importen.

(Nota: Estos datos subestablecida de un ejemplo del blog revoluciones)

+0

muy inteligente para obtener esto aquí. –

Respuesta

19

El comando dput escribe una representación ASCII. Si en lugar de un nombre de archivo se pone "" se escribirá a la consola

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

Sólo tienes que copiar la estructura y la puso después de "site.data =" en el código de ejemplo y la gente será capaz de recrear los datos encuadrar exactamente como lo tienes.

6

En realidad, en el ejemplo original, la forma en que ha pegado sus datos en formato de columna funciona bien. He copiado el texto de la página web, y lo hizo (usando OS X, así que tengo la "pasta" comando nice):

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

Para los datos de juguete como algo publicado como un caso de prueba, esto es a menudo el mejor enfoque. Para ser más preciso, dput() es bueno, como dice dggoldst.

3

Otra forma, similar a la de Ken es usar el portapapeles (en Windows, y posiblemente en Linux). Copiaría su código y ejecutaría

> 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 
Cuestiones relacionadas