将字符串列表转换为代表变量的符号列表

时间:2018-10-27 01:54:16

标签: r xts

我有一个字符串列表,这些字符串表示全局环境中的xts对象名称。如何将字符串列表转换为名称列表,以便正确格式化以插入do.call函数?这样,函数将合并xts对象,而不只是字符串名称。

xtsNames <- list("name1", "name2", "name3")

name1 <- xts(x=1:10, order.by=Sys.Date()-1:10)
name2 <- xts(x=11:20, order.by=Sys.Date()-11:20)
name3 <- xts(x=21:30, order.by=Sys.Date()-21:30)


as.name(xtsNames) # this code fails because it does not work on a list

NewData <- do.call(rbind, xtsNames) # this code merges the strings, rather 
                                    # than the xts objects

2 个答案:

答案 0 :(得分:3)

您可以使用rlang包将变量名的字符串转换为实际符号:

do.call( rbind, rlang::syms(xtsNames) )

如果只需要基数R,则可以使用lapply

do.call( rbind, lapply(xtsNames, as.name) )

答案 1 :(得分:3)

我不确定我是否完全理解您的问题,但是您可能希望在此处使用“获取”。

do.call('rbind',lapply(xtsNames, get))

附带说明:要理解'get',请假设x <-2,然后如果在控制台上通过get('x'),则将获得2作为返回值。

?获取:

  

按名称搜索一个对象(获取)或零个或多个对象(mget)。

这将返回某些行,如下所示:

> do.call('rbind',lapply(xtsNames, get))
           [,1]
2018-09-27   30
2018-09-28   29
2018-09-29   28
2018-09-30   27
2018-10-01   26
2018-10-02   25
2018-10-03   24
相关问题