Поместите несколько фреймов данных в список (умный способ)

Можно ли поместить много кадров данных в список несколькими способами? Значение вместо того, чтобы писать каждое имя вручную, как показано ниже:

list_of_df <- list(data_frame1,data_frame2,data_frame3, ....)

У меня есть все кадры данных, загруженные в мое рабочее пространство. Я собираюсь использовать список для циклического преобразования всех кадров данных (для выполнения тех же операций в каждом кадре данных).

Ответы

Ответ 1

Вы можете использовать ls() с get следующим образом:

l.df <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x))

Это загрузит все data.frames из рабочей области текущей среды.

В качестве альтернативы, как предлагает @agstudy, вы можете использовать шаблон для загрузки только требуемого data.frame.

l.df <- lapply(ls(pattern="df[0-9]+"), function(x) get(x))

Загружает все data.frame в текущей среде, которая начинается с df, а затем 1 на любое количество чисел.

Ответ 2

Вы можете использовать ls с определенным шаблоном, например. Например:

некоторые data.frames:

data.frame1 <- data.frame()
data.frame2 <- data.frame()
data.frame3 <- data.frame()
data.frame4 <- data.frame()

list(ls(pattern='data.fra*'))
[[1]]
[1] "data.frame1" "data.frame2" "data.frame3" "data.frame4"

Ответ 3

Самым простым решением было бы поместить data.frame в список, в котором вы их создадите. Однако, если у вас есть список имен объектов:

list_df = lapply(list_object_names, get)

где вы можете построить список, подобный этому (пример для 10 объектов):

list_object_names = sprintf("data_frame%s", 1:10)

или получить все объекты в текущем рабочем пространстве в список:

list_df = lapply(ls(), get)
names(list_df) = ls()