Функция R до l oop через глобальную среду - PullRequest
1 голос
/ 11 апреля 2020

В моем глобальном окружении класса data.frame есть более 70 объектов с именами A, B, C, D и так далее. Каждый из них имеет различное количество строк и три столбца, где первый - дата. Я хочу применить следующую функцию для каждого из них:

A$date<-as.Date(A$date)
A.xts<-xts(A[,2:3], order.by = A$date)

Есть ли способ построить для l oop, который проходит через каждый объект в глобальной среде?

Спасибо

1 Ответ

1 голос
/ 11 апреля 2020

Мы можем получить все объекты в list с помощью mget (при условии, что мы загружаем все объекты из рабочего пространства, и все они являются фреймами данных), а затем применить функцию

library(xts)
lst1 <- lapply(mget(ls()), f1)

ПРИМЕЧАНИЕ. В ls мы также можем передать patterns. Предположим, если объекты набора данных имеют имена «df1», «df2» и т. Д. c

lst1 <- lapply(mget(ls(pattern = '^df\\d+$')), f1)

Если мы действительно хотим создать несколько объектов, используйте list2env (не рекомендуется)

names(lst1) <- paste0(names(lst1), '_new')
list2env(lst1, .GlobalEnv)

где

f1 <- function(x) { x$date <- as.Date(x$date)
              xts(x[,2:3], order.by = x$date)
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...