2 votes

convertir un objet caractère en dataframe directement sans sauvegarde

J'ai un morceau de script comme ci-dessous :

temp <- getURL("http://chart.yahoo.com/table.csv?s=^HSI&a=0&b=01&c=1900&d=0&e=07&f=2013&g=d&q=q&y=0&z=^HSI&x=.csv",.opts=opts)
write(temp,file="test.txt")
temp <- read.csv("test.txt")

Je déteste l'enregistrer en tant que txt avant de l'importer à nouveau en tant que dataframe, j'ai entendu quelque chose du genre connection Puis-je sauter ce processus d'écriture et de chargement ?

3voto

Didzis Elferts Points 29673

Vous pouvez utiliser la fonction read.csv() directement pour importer ce fichier csv

temp<-read.csv("http://chart.yahoo.com/table.csv?s=^HSI&a=0&b=01&c=1900&d=0&e=07&f=2013&g=d&q=q&y=0&z=^HSI&x=.csv")
head(temp)
        Date     Open     High      Low    Close     Volume Adj.Close
1 2013-01-04 23370.36 23370.36 23172.28 23331.09 1505752800  23331.09
2 2013-01-03 23390.54 23400.74 23234.43 23398.60 2211207000  23398.60
3 2013-01-02 22860.25 23317.39 22860.25 23311.98 2129252800  23311.98
4 2012-12-31 22584.44 22698.33 22566.89 22656.92  685413000  22656.92
5 2012-12-28 22706.33 22706.33 22628.46 22666.59 1043816200  22666.59
6 2012-12-27 22705.46 22718.83 22608.60 22619.78 1053372600  22619.78

1voto

Spacedman Points 33792

Une autre réponse montre comment faire cela en une seule étape en fournissant une URL vers read.csv, le cas plus général de la lecture à partir de n'importe quelle chaîne de texte utilise la fonction textConnection fonction :

> data = read.csv(textConnection("A,B,C\n4,5,6\n99,5,4"))
> data
   A B C
1  4 5 6
2 99 5 4

Avec votre exemple de page web, cela devient :

> data = read.csv(textConnection(getURL("http://chart.yahoo.com/table.csv?s=^HSI&a=0&b=01&c=1900&d=0&e=07&f=2013&g=d&q=q&y=0&z=^HSI&x=.csv")))
> head(data)
        Date     Open     High      Low    Close     Volume Adj.Close
1 2013-01-04 23370.36 23370.36 23172.28 23331.09 1505752800  23331.09
2 2013-01-03 23390.54 23400.74 23234.43 23398.60 2211207000  23398.60
3 2013-01-02 22860.25 23317.39 22860.25 23311.98 2129252800  23311.98
4 2012-12-31 22584.44 22698.33 22566.89 22656.92  685413000  22656.92
5 2012-12-28 22706.33 22706.33 22628.46 22666.59 1043816200  22666.59
6 2012-12-27 22705.46 22718.83 22608.60 22619.78 1053372600  22619.78

mais il est évident que c'est mieux de le faire avec read.csv("http:/...etc") .

Voir help(connection) pour plus.

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