我的代码:
library(quantmod)
library(tseries)
library(ggplot2)
companies = c("IOC.BO", "BPCL.BO", "ONGC.BO", "HINDPETRO.BO", "GAIL.BO")
stocks = list()
for(i in 1:5){
stocks[[i]] = getSymbols(companies[i], auto.assign = FALSE)
}
stocks
是数据帧的列表。现在,我试图绑定所有{adjusted的列,存储在stock
中的所有数据帧,但是要做到这一点,我需要删除行名(请告诉我是否有更好的方法来做到这一点):
for(i in 1:5)
rownames(stocks[[i]])<- NULL
但是结果数据框仍然具有行名,有人可以告诉我我要去哪里哪里吗
P.S。另外,我的最终目标是在列表stocks
中创建一个仅包含调整后的数据框列的数据框,
adjusted=data.frame()
for(i in 1:5)
coln=stocks[[1]][,6]
adjusted=cbind(ajusted,coln)
adjusted
但是这将作为列表进行调整。
答案 0 :(得分:2)
关于运行问题代码后的行名
rownames(stocks[[1]])
## NULL
因此,股票之后没有行名是不正确的。
要创建调整后的时间序列,请使用Ad
,如下所示。
Adjusted <- do.call("merge", lapply(stocks, Ad))
请注意,我们实际上并不需要整个行名的处理,下面的内容就足够了。最后一行是可选的,因为它的唯一目的是使列名更好,最后一行将xts对象Adjusted
转换为数据帧,也可能不需要,因为您可能会发现使用xts对象更多比使用数据帧更方便。
library(quantmod)
library(ggplot2)
stocks <- lapply(companies, getSymbols, auto.assign = FALSE)
Adjusted <- do.call("merge", lapply(stocks, Ad))
names(Adjusted) <- sub(".BO.Adjusted", "", names(Adjusted))
adjustedDF <- fortify(Adjusted)