在一个代码中对多个对象应用 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)
我使用 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)