在一个代码中对多个对象应用 Colnames() 函数

Applying Colnames() function on several objects in one code

我使用 Quantmod 的 getSymbols 函数下载了很多股票数据。我现在正尝试使用以下代码将所有这些的列名称更改为以下内容:

StockColumnNames <- c("Open","High","Low","Close","Volume","Adjusted Close")
colnames() <- StockColumnNames

现在这只适用于一只股票,但是,我有大约 800 只股票的数据。我想知道我是否可以用一小段代码来做到这一点?

如果我在代码中放入以下内容,它会出现此错误:

C20_stock_List <- c("NZYM-B.CO","DANSKE.CO","DSV.CO","CARL-B.CO","MAERSK-A.CO","WDH.CO","LUN.CO","TDC.CO","GN.CO","MAERSK-B.CO","NOVO-B.CO","COLO-B.CO","JYSK.CO","ISS.CO","VWS.CO","CHR.CO","GEN.CO","PNDORA.CO","NETS.CO")
getSymbols(C20_stock_List, from = '2017-01-01')
colnames(C20_stock_List) <- StockColumnNames

> colnames(C20_stock_List) <- StockColumnNames

Error in colnames<-(*tmp*``, value = c("Open", "High", "Low", "Close", : attempt to set 'colnames' on an object with less than two dimensions

有人对此有解决方案吗?提前致谢。

这里有两种方法:

library(quantmod)
C20_stock_List <- c("NZYM-B.CO","DANSKE.CO","DSV.CO")
getSymbols(C20_stock_List, from = '2017-01-01')

StockColumnNames <- c("Open","High","Low","Close","Volume","Adjusted Close")
lapply(C20_stock_List, function(x, StockColumnNames_) {
  z <- get(x, envir = .GlobalEnv)
  colnames(z) <- StockColumnNames_
  assign(x, value = z, envir = .GlobalEnv)
  return()
}, StockColumnNames_ = StockColumnNames)

当获取多个符号时,不是让所有符号出现在 .GlobalEnv 中,而是将它们分配到一个环境中。对于大多数与遍历每个符号中的数据相关的任务,这种方法可能更容易:

e <- new.env()
getSymbols(C20_stock_List, from = '2017-01-01', auto.assign = TRUE, env = e)

for (sym in C20_stock_List) {
  colnames(e[[sym]]) <- StockColumnNames
}

head(e$DANSKE.CO)