我经常收到几个xts
以日期作为行名称的对象。我必须改变那些xts
物体进入data.frame
对象,但是当我这样做时,作为日期的行名称将成为名为的新第一列Ìndex
包含日期。但我需要那些Index
要调用的列Date
.
因此,我想迭代地更改所有新转换的第一列名称data.frame
对象来自Index
to Date
.
然而,当我尝试下面的(可重现的)代码时,在第 4 点,我系统地得到了一个Error in `colnames<-`(`*tmp*`, value = `*vtmp*`) : attempt to set 'colnames' on an object with less than two dimensions
#**************#
# 1. Load data #
#**************#
library(fs)
library(quantmod)
library(zoo)
tickers <- c("NKLA", "MPNGF", "RMO", "JD", "COIN")
getSymbols.yahoo(tickers, auto.assign = TRUE, env = globalenv())
closeAllConnections()
#******************************#
# 2. Find all loaded xts files #
#******************************#
xtsObjects <- names(which(unlist(eapply(.GlobalEnv, is.xts))))
#******************************************************#
# 3. Convert into data.frames found xts files under 2. #
#******************************************************#
for (i in seq_along(xtsObjects)) {
assign(xtsObjects[i], fortify.zoo(get(xtsObjects[i])))
}
#***************************************************************#
# 4. Change name of 1st column to Date of converted xts objects #
#***************************************************************#
# Check if for loop prints what I want, as a precaution
for (i in seq_along(xtsObjects)) {
print(get(xtsObjects[i]))
}
# But when I try the following, I get the error shown above
for (i in seq_along(xtsObjects)) {
colnames(xtsObjects[i])[1] <- "Date"
}
# Same error here
for (i in seq_along(xtsObjects)) {
colnames(xtsObjects)[which(names(xtsObjects) == "Index")] <- "Date"
}
# Still same error
for (i in seq_along(xtsObjects)) {
colnames(xtsObjects)[colnames(xtsObjects) == "Index"] <- "Date"
}
我的问题:
- 我必须输入什么循环代码才能更改名为的第一列
Index
to Date
在所有新转换的xts
物体进入data.frame
物体?
使用的系统:
- R版本:4.1.1(2021-08-10)
- RStudio 版本:1.4.1717
- 操作系统:macOS Catalina 版本 10.15.7 和 macOS Big Sur 版本 11.6
我们需要get
值,然后执行assign
for (i in seq_along(xtsObjects)) {
tmp <- get(xtsObjects[i])
colnames(tmp)[colnames(tmp) == "Index"] <- "Date"
assign(xtsObjects[i], tmp)
}
现在,检查列名称
> lapply(mget(xtsObjects), names)
$MPNGF
[1] "Date" "MPNGF.Open" "MPNGF.High" "MPNGF.Low" "MPNGF.Close" "MPNGF.Volume" "MPNGF.Adjusted"
$NKLA
[1] "Date" "NKLA.Open" "NKLA.High" "NKLA.Low" "NKLA.Close" "NKLA.Volume" "NKLA.Adjusted"
$JD
[1] "Date" "JD.Open" "JD.High" "JD.Low" "JD.Close" "JD.Volume" "JD.Adjusted"
$COIN
[1] "Date" "COIN.Open" "COIN.High" "COIN.Low" "COIN.Close" "COIN.Volume" "COIN.Adjusted"
$RMO
[1] "Date" "RMO.Open" "RMO.High" "RMO.Low" "RMO.Close" "RMO.Volume" "RMO.Adjusted"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)