我有这个问题对我没用。
TickerList <- c("NAB.AX", "WES.AX", "TLS.AX", "CSL.AX", "WPL.AX", "SUN.AX")
for (Ticker in TickerList)
{
tickerdata.w <- get.hist.quote(Ticker, start = "2000-01-01",compression = "w", quote = "AdjClose")
#This is to get Continuous Compounding Return
ticker.log.data <- log(lag(tickerdata.w)) - log(tickerdata.w)
#This should give the name of the ticker to the log data
#eg, the first one will end up with a NAB.AX
assign(Ticker, ticker.log.data)
#Now I want to get the first data into a dataframe.
#So I want MyData to hold the NAB.AX log data.
#I know the loop works but there is something wrong with assigning the ticker data to the dataframe.
if (Ticker == TickerList[1]) {
MyData = (Ticker)
#And now the rest are to be merged into the dataframe
} else {
MyData = merge(MyData, Ticker)
}
}
然而,它只是不起作用。进入数据框的唯一事情是名称,如NAB.AX而不是数据。
欢迎任何指导。
答案 0 :(得分:0)
library(tseries)
rm(list=ls())
TickerList <- c("NAB.AX", "WES.AX", "TLS.AX", "CSL.AX", "WPL.AX", "SUN.AX")
for (Ticker in TickerList)
{
tickerdata.w <- get.hist.quote(Ticker, start = "2000-01-01",compression = "w", quote = "AdjClose")
ticker.log.data <- log(lag(tickerdata.w)) - log(tickerdata.w)
assign(Ticker, ticker.log.data)
if (Ticker == TickerList[1]) {
Stock.DF <- (ticker.log.data)
} else {
Stock.DF <- merge(Stock.DF, ticker.log.data)
}
}
head(Stock.DF)
names(Stock.DF) <- c("NAB", "WES", "TLS", "CSL", "WPL", "SUN")
TSData = as.timeSeries(Stock.DF)
Data = na.omit(TSData)
答案 1 :(得分:0)
我假设您想要的是一个数据框,其中股票代码为列名,日志数据为行,但问题并不十分清楚。
使用for循环构建数据框并不是常见的R语言,尽管它在其他语言中很流行。更好的方法是使用apply
函数(它确实在引擎盖下使用for循环)。
首先,定义一个函数,在给定股票代码的情况下返回日志数据。
getData <- function(symbol) {
tickerdata.w <- get.hist.quote(symbol, start = "2000-01-01",
compression = "w", quote = "AdjClose")
ticker.log.data <- log(lag(tickerdata.w)) - log(tickerdata.w)
ticker.log.data <- ticker.log.data[1:778,] # ensure equal length
return(ticker.log.data)
}
请注意,您提供的大多数符号都会给出长度为778的结果,但其中一个给出长度为780的结果。如果您需要数据框,则所有符号必须具有相同的长度,因此getData
中的注释行会截断。
接下来,将该函数应用于每个符号。这会生成一个列表。使用符号重命名列表的元素。
TickerList <- c("NAB.AX", "WES.AX", "TLS.AX", "CSL.AX", "WPL.AX", "SUN.AX")
MyData <- lapply(TickerList, FUN = getData)
names(MyData) <- TickerList
最后,从列表转换为数据框。
MyData <- data.frame(MyData)
请注意,使用这些符号调用get.hist.quote
会产生有关下载文件长度的警告消息。我没有查看这些消息,但您可能想要。