R кодирование векторов праздников, возможно, с использованием пакета timeDate - PullRequest
0 голосов
/ 08 января 2019

пакет timeDate в R содержит список праздников, которые я хотел бы включить в набор данных временных рядов. Если я позвоню timeDate::listHolidays("US"), я получу вектор названий выходных в США, которые соответствуют именам функций в пакете timeDate. Я хотел бы программно перебрать эти списки праздников и получить значение даты для данного года (или лет).

Что-то вроде

hdates <- list()
i <- 1
for (h in timeDate::listHolidays('US')) {
    hdates[[i]] <- h(2018)
    i <- i + 1
}

Это, конечно, не работает, потому что h - это строка / символ, а не функция. Есть ли способ программно получить именованную функцию из пространства имен? Я также открыт для других методов извлечения дат для НЕСКОЛЬКИХ праздников.

1 Ответ

0 голосов
/ 08 января 2019

Использование eval(parse(text=)) ...

library(timeDate)
hdates <- list()
i <- 1
for (h in listHolidays('US')) {
    hdates[[i]] <- eval(parse(text=paste0(h, "(2018)")))
    i <- i + 1
}

Или более краткий метод ...

lapply(listHolidays('US'), function(x) eval(parse(text=paste0(x, "(2018)"))))

Или, если вы хотите получить именованные элементы списка ...

sapply(listHolidays('US'), function(x) eval(parse(text=paste0(x, "(2018)"))))
...