【问题标题】:Converting some objects转换一些对象
【发布时间】:2015-02-24 18:15:26
【问题描述】:

好的,我有像这样的 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”的对象

谁能告诉我这样做的好方法吗? 感谢您的帮助!

【问题讨论】:

  • 请展示一些可重现的例子。使用dput 显示x1x2 等。
  • 好的,我会编辑我的问题
  • 请检查发布的解决方案。 vask1 未在显示的代码中的任何地方定义
  • 没问题。你测试过解决方案吗
  • 其实我得到一个错误错误在get(x[i]) : invalid first argument

标签: r loops vector time-series xts


【解决方案1】:

你可以试试

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2016-05-04
    相关资源
    最近更新 更多