如何将结果保存到各种名称的各种data.frames中

时间:2015-12-13 21:35:23

标签: r quantmod

我有以下矢量:

USTickers=c("BAC","C","JPM","HBS","WFC","GS","MS","USB","BK","PNC")

实际上我的这个载体要长得多,但我只是把它缩短了。此向量具有股票的股票代码。

我使用quantmod从雅虎下载股票的数据。

由于我不打算为每个特定的股票代码编写函数,我想做一个循环。 首先,我想使用一个不是问题的函数getSymbols。下载特定库存的对象。

但是我想对它进行一些调整并保存。然后我有一个问题(for循环中的第二行)。我想要一个变量名。将保存它的对象的名称必须更改。但我无法做到这一点。

for (i in 1:(length(USTickers))) {
  getSymbols.yahoo(paste(USTickers[i]),.GlobalEnv,from=StrtDt,to=EndDt)
  as.symbol(USTickers[i]=data.frame(time(get(USTickers[1])),get(USTickers[1])[,4],row.names=NULL)
}

瘾:

在我下载的股票的每个对象中,列名都采用此格式"AAL.Open",我想将其更改为"AAL"。我该如何更改列名?

我知道可以使用colnames功能完成,但我不知道如何自动执行操作。

导致第一部分" AAL"将不断变化,我只是想摆脱".Open"部分。

基本上我可以用一个自动收录器名称重写它,但是当列名称发生变化时我不知道如何应用它,我打算用作向量USTickers的参考。

1 个答案:

答案 0 :(得分:0)

最好使用getSymbols函数关闭自动分配并将结果存储在列表中。以后可以轻松访问这些元素。请参阅下面的一些想法。

require(quantmod)

# Not going to loop through all
USTickers = c("BAC","C")#,"JPM","HBS","WFC","GS","MS","USB","BK","PNC")

# Initialise empty list
mysymbols <- vector("list", length(USTickers))

# Loop through symbols
for (i in 1:length(USTickers)) {
  # Store in list
  mysymbols[[i]] <- getSymbols.yahoo(paste(USTickers[i]),auto.assign = F)

  # Isolate column of interest and date
  mysymbols[[i]] <- data.frame(time(mysymbols[[i]]), 
                               mysymbols[[i]][,4],
                               row.names = NULL)

  # Change list elements name to symbol
  names(mysymbols)[i] <- USTickers[i]
}

关于替换名称,可以使用可以应用于组合名称的gsub轻松完成。例如:

gsub(".Open", "", "AAL.Open")

但是,如果您只想将该列名称设为自动收报机,您也可以直接在循环中执行此操作colnames(mysymbols[[i]])[2] <- USTickers[i]