2

我有一段脚本如下:

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

我讨厌在将其作为数据框再次导入之前将其保存为 txt,我听说过类似的内容connection,我可以跳过这个“写入和加载”过程吗?

4

2 回答 2

3

你可以直接使用函数read.csv()来导入这个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
于 2013-01-07T06:41:10.527 回答
1

另一个答案显示了如何通过提供 read.csv 的 URL 一步完成此操作,从任何文本字符串读取的更一般情况下使用该textConnection函数:

> 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

对于您的网页示例,这将变为:

> 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

但显然最好用read.csv("http:/...etc").

查看help(connection)更多。

于 2013-01-07T08:13:05.993 回答