2009-08-12 7 views
13

Supposons que vous ayez ces données dans R et que vous souhaitiez poser une question sur stackoverflow. Pour que les autres vous aident au mieux, il serait bon qu'ils puissent avoir une copie de votre objet (dataframe, vector, etc) avec lequel travailler.Comment exporter la définition d'un objet R en texte brut afin que d'autres puissent le recréer?

Disons que vos données sont dans une trame de données appelé 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 

Comment empaqueter afin que les utilisateurs peuvent recréer les données exactement comme vous l'avez?

Vous voulez faire cela sans que les gens téléchargent un fichier texte et l'importent.

(Note: Ces données subsetted à partir d'un exemple de Revolutions blog)

+0

très intelligent pour l'obtenir ici. –

Répondre

19

La commande dput écrit une représentation ASCII. Si au lieu d'un nom de fichier que vous mettez « » il va écrire à la 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") 

copie juste la structure et le mettre après « site.data = » dans votre exemple de code et les gens seront en mesure de recréer les données cadrer exactement comme vous l'avez.

6

En fait, dans votre exemple d'origine, la façon dont vous avez collé vos données en format de colonne fonctionne très bien. Je viens de copier votre texte à partir de la page Web, et ai fait (avec OS X, donc j'ai la belle commande « coller »):

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

Pour les données de jouets comme quelque chose affiché comme un test, ce qui est souvent le meilleure approche. Pour être extra-précis, dput() est bon, comme le dit dggoldst.

3

Une autre façon, similaire à celle de Ken, est d'utiliser le presse-papier (sur Windows, et éventuellement Linux). Je voudrais copier votre code et exécuter

> 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 
Questions connexes