从数据框列表中删除行名?

时间:2018-10-14 12:37:33

标签: r dataframe quantmod

我的代码:

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

但是这将作为列表进行调整。

1 个答案:

答案 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)