29 votes

Code pour importer des données d'une requête de débordement de pile dans R

Lorsque j'essaie de répondre à une question dans un Débordement de Pile sur R, une bonne partie de mon temps est consacré à essayer de reconstruire les données donnée à titre d'exemple (à moins que l'auteur de la question a été assez gentil comme R code).

Donc ma question est, si quelqu'un juste pose une question et donne son exemple de trame de données de la manière suivante :

a  b   c
1 11 foo
2 12 bar
3 13 baz
4 14 bar
5 15 foo

Avez-vous une astuce ou une fonction pour importer facilement dans un R de session, sans avoir à taper l'intégralité de l' data.frame() de l'enseignement ?

Merci d'avance pour tout conseil !

PS : désolé si le terme "requête" n'est pas vraiment agréable dans ma question de titre, mais il semble que vous ne pouvez pas utiliser le mot "question" dans une question de titre dans le débordement de la Pile :-)

22voto

Dirk Eddelbuettel Points 134700

Peut-être que textConnection() est ce que vous voulez ici:

 R> zz <- read.table(textConnection("a  b   c
1 11 foo
2 12 bar
3 13 baz
4 14 bar
5 15 foo"), header=TRUE)
R> zz
  a  b   c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
R> 
 

Il vous permet de traiter le texte comme une "connexion" à partir de laquelle lire. Vous pouvez également simplement copier-coller, mais l'accès à partir du presse-papiers dépend plus du système d'exploitation et donc moins portable.

22voto

BondedDust Points 105234

La version récente de R offrent maintenant une partie de touches option que l' textConnection route pour l'entrée de colonnes de données à lire.la table et les amis. face à cette:

zz
  a  b   c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo

On peut simplement insérer : <- read.table(text=" après l' zz, de supprimer le retour de chariot et puis insérez - ", header=TRUE) après la dernière foo et tapez [enter].

zz<- read.table(text="  a  b   c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo", header=TRUE)

On peut aussi utiliser d' scan efficacement entrer dans de longues séquences de nombres purs ou pur caractère de vecteur d'entrées. Face à: 67 75 44 25 99 37 6 96 77 21 31 41 5 52 13 46 14 70 100 18 , on peut simplement taper: zz <- scan() et appuyer sur [enter]. Puis coller les numéros sélectionnés et appuyer sur [enter] à nouveau et peut-être une deuxième fois à cause d'un double retour chariot et la console devrait répondre "lire 20 articles".

> zz <- scan()
1: 67  75  44  25  99  37   6  96  77  21  31  41   5  52  13  46  14  70 100  18
21: 
Read 20 items

Le "caractère" de la tâche. après le collage de la console et de l'édition étrangère de la ligne d'alimentation et de l'ajout de guillemets, puis en appuyant sur [enter]:

> countries <- scan(what="character")
1:     'republic of congo'
2:     'republic of the congo'
3:     'congo, republic of the'
4:     'congo, republic'
5: 'democratic republic of the congo'
6: 'congo, democratic republic of the'
7: 'dem rep of the congo'
8: 
Read 7 items

13voto

dbaupp Points 20762

Vous pouvez également demander à l'interrogateur d'utiliser la fonction dput qui sauvegarde toute structure de données d'une manière qui peut être simplement copiée-collée dans R. ex.

 > zz
  a  b   c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo

> dput(zz)
structure(list(a = 1:5, b = 11:15, c = structure(c(3L, 1L, 2L, 
1L, 3L), .Label = c("bar", "baz", "foo"), class = "factor")), .Names = c("a", 
"b", "c"), class = "data.frame", row.names = c(NA, -5L))

> xx <- structure(list(a = 1:5, b = 11:15, c = structure(c(3L, 1L, 2L, 
+ 1L, 3L), .Label = c("bar", "baz", "foo"), class = "factor")), .Names = c("a", 
+ "b", "c"), class = "data.frame", row.names = c(NA, -5L))
> xx
  a  b   c
1 1 11 foo
2 2 12 bar
3 3 13 baz
4 4 14 bar
5 5 15 foo
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X