【发布时间】:2011-03-31 06:45:02
【问题描述】:
这是 R 中的一个新手问题。我正在使用 R 下载雅虎财经月度股票价格数据,其中代码名称是从文本文件中读取的。我正在使用循环读取代码名称以下载数据并将它们放入列表中。我的问题是一些股票名称可能不正确,因此我的代码在遇到这种情况时会停止。我想要以下。
- 如果代码名称不正确,请跳过它。
- 列表中的每个元素都是一个数据框。我希望将代码名称附加到元素数据框中的变量名称中。
- 我需要一种有效的方法来创建以收盘价作为变量的数据框。
这是我的问题的简化版本的示例代码。
library(tseries)
tckk <- c("MSFT", "C", "VIA/B", "MMM") # ticker names defined
numtk <- length(tckk);
ustart <- "2000-12-30";
uend <- "2007-12-30" # start and end date
all_dat <- list(); # empty list to fill in the data
for(i in 1:numtk)
{
all_dat[[i]] <- xxx <- get.hist.quote(instrument = tckk[i], start=ustart, end=uend, quote = c("Open", "High", "Low", "Close"), provider = "yahoo", compression = "m")
}
代码在第三个条目处停止,但我想跳过此代码并转到“MMM”。我听说过 Trycatch() 函数,但不知道如何使用它。
根据问题 2,我希望列表第一个元素的变量名称为“MSFTopen”、“MSFThigh”、“MSFTlow”和“MSFTclose”。除了使用循环和粘贴()函数的组合之外,还有更好的方法吗?
最后,对于问题 3,我需要一个包含三列对应收盘价的数据框。再次,我试图在这里避免循环。
谢谢。
【问题讨论】:
-
将代码的初始行缩进 4 个空格以创建可读的代码块。
-
小语法修正。