我是学习 R 的新手,我的一些 R 代码有问题。为了您的方便,我放置了所有代码,以便您可以看到我正在尝试做的事情的逻辑。我的问题是重命名我的 xts 对象 Monthly_Quotes 的标题。我知道当股票代码无效时,getsymbols 函数不会检索“zzzz”的引号,这就是我遇到重命名标题问题的原因。我想解决这个问题,如果我有一个更大的股票代码列表没有被下载,我不会有从我的股票代码列表中重命名标题的问题。
#Environment to store stock symbols data
ETF_Data <- new.env()
#Dates needed for getSymbols function
sDate <- as.Date("2007-09-04") #Start Date
eDate <- as.Date("2014-09-02") #End Date
#Assign vector of ticker symbols
ticker_symbol <- c("zzzz","IVW","JKE","QQQ","SPYG","VUG" )
#Load functions
source("Functions.R")
#Create empty list
Temp_ETF_Data <- list()
#Variable is a connection to a specific file that appends the output to the file
connection_string <- file("Log_File.txt", open = "wt")
#Sink allows the R output to a connection file which is connection_string
#Log_File.txt is created to the directory that has been set
sink(connection_string, type="message")
#Loop to retrieve prices from Yahoo's API and assign only the Adjusted column to the list.
for(i in ticker_symbol){
tryCatch(
{
getSymbols(i, env = ETF_Data, from = sDate, to = eDate, src = "yahoo", warning = FALSE)
Temp_ETF_Data[[i]] <- Ad(ETF_Data[[i]])
},
error = function(e) {
message("-ERROR-")
message(paste("Error for ticker symbol :", i, "\n"))
message("Here's the original error message: ")
message(e)
message("")
return(i)},
finally = {
message(paste("Data was processed for symbol:", "[", i, "]" ))
message("\n","******************************************", "\n")
})
}
#Turns off message once it is on the console and reads the line.
#Then it closes the sink connection and closes the connection to the Log_File.txt
sink(type = "message")
readLines("Log_File.txt")
close(connection_string)
#Merge list into columns from list
Daily_Quotes <- do.call(merge, Temp_ETF_Data)
#Create new xts object with the 1st trading day price of each month and assign column headers
Monthly_Quotes <- Daily_Quotes[startpoints(Daily_Quotes,'months')]
#This piece of code creates this error
# "Error in `colnames<-`(`*tmp*`, value = c("zzzz", "IVW", "JKE", "QQQ", :
# length of 'dimnames' [2] not equal to array extent"
names(Monthly_Quotes) <- c(ticker_symbol)
我试过这个:
ticker_symbol <- colnames(Monthly_Quotes)
names(Monthly_Quotes) <- c(ticker_symbol)