Поместите несколько фреймов данных в список (умный способ)
Можно ли поместить много кадров данных в список несколькими способами?
Значение вместо того, чтобы писать каждое имя вручную, как показано ниже:
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()