转换一些对象

时间:2014-12-28 05:45:58

标签: r loops vector time-series xts

好的,我有像

这样的xts对象
bid1, bid2, bid3, ..., bid30

它们是日内货币汇率数据。 例如,

head(bid1)

返回

                        ..2
2014-09-01 00:00:00 104.165
2014-09-01 00:00:01 104.352
2014-09-01 00:00:02 105.239
2014-09-01 00:00:03 104.891
2014-09-01 00:00:04 105.587
2014-09-01 00:00:05 105.028

我想将它们改为像

这样的载体
vbid1, vbid2, vbid3, ..., vbid30

我想出了像

这样的编码
i <- 1
for (i in 1:30)
{
 vbid[i] <- as.vector(bid[i])
 i <- i+1
}

但它没有用。 它没有返回任何错误或警告,但当我检查时

head(vbid1)

它说没有名为'vbid1'的对象

有人能告诉我这样做的好方法吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

你可以尝试

for(i in seq_along(x)){
assign(paste0('v',x[i]), as.vector(get(x[i])))
}

vbid1
#[1] 1 2 3 4 5
vbid2
#[1]  6  7  8  9 10

或使用list2env

list2env(setNames(lapply(mget(x), as.vector),
                   paste0('v',x)), envir=.GlobalEnv)
 <environment: R_GlobalEnv>

数据

n <- 3
library(xts)
bid1 <- xts(1:5, order.by=seq(Sys.Date(),length.out=5, by='1 day'))
bid2 <- xts(6:10,order.by=seq(Sys.Date(),length.out=5, by='1 day'))
bid3 <- xts(1:15, order.by=seq(Sys.Date(),length.out=15, by='1 day'))
x <- paste0('bid', 1:n)