Простой способ упомянуть все объекты внутри функции, не записывая их все явно

Предположим, я создал 100 фреймов данных с именами v1, v2, v3, v4, v5,...,v99,v100. Все эти фреймы данных имеют одинаковый размер, я имею в виду, что все они имеют одинаковый набор столбцов. Теперь я хочу экспортировать все эти фреймы данных, добавленные в один CSV-файл, используя rbind в write.csv. Поэтому я использую функцию

write.csv(rbind(v1, v2, v3,v4,v5), "myfilename.csv")

Приведенная выше команда выполняет свою работу, но, как вы видите, добавляется только 5 фреймов данных. Я хочу добавить все кадры данных, то есть от v1 до v100 (в последовательном порядке), но запись всех их имен по отдельности может быть болезненной задачей. Есть ли простой способ упомянуть все имена объектов, не записывая все их имена. Благодарю в ожидании.


person Rookie    schedule 31.03.2017    source источник
comment
Ну, создавать их как кучу разных переменных было не очень хорошей идеей. Лучше делать то, что в списке. Как вы создали их в первую очередь? Есть способы сделать то, что вы хотите, но, вероятно, лучше решить проблему в начале, а потом убрать после беспорядка.   -  person MrFlick    schedule 31.03.2017
comment
Эти кадры данных содержат информацию о децилях для всех моих непрерывных переменных в моем наборе данных. Я хочу поместить всю эту информацию о децилях на одном рабочем листе, чтобы я мог просмотреть ее и выполнить профилирование, необходимое для задачи регрессионного моделирования. Вот почему я должен использовать функцию rbind и упомянуть все эти имена объектов от v1 до v100. Надеюсь, вы понимаете, что я пытаюсь сказать.   -  person Rookie    schedule 31.03.2017


Ответы (1)


Если у вас должны быть отдельные объекты, получите имена и упорядочите их по номеру. Затем скопируйте их в список L и rbind вместе.

nms <- ls(pattern = "^v\\d+$")
nms <- nms[order(as.numeric(sub("v", "", nms)))]
L <- mget(nms)
DF <- do.call("rbind", L)

однако, как упомянул @MrFlick, было бы лучше создать их в списке L в первую очередь, и в этом случае потребуется только последний оператор.

person G. Grothendieck    schedule 31.03.2017