Преобразовать список строк в список символов, которые представляют переменные - PullRequest
0 голосов
/ 27 октября 2018

У меня есть список строк, которые представляют имена объектов 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 голосов
/ 27 октября 2018

Я не уверен, что полностью понял ваш вопрос, но вы можете использовать здесь «get».

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

На заметку : Чтобы понять 'get', предположим, что x <- 2, затем, если вы передадите get ('x') на консоли, вы получите 2 в качестве возвращаемого значения. </p>

получить:

Поиск по имени для объекта (получить) или ноль или более объектов (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
0 голосов
/ 27 октября 2018

Вы можете использовать пакет rlang для преобразования строк имен переменных в реальные символы:

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

Если вы хотите просто базу R, то это можно сделать с помощью lapply:

do.call( rbind, lapply(xtsNames, as.name) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...