Как программно создать фрейм данных из векторов с некоторым шаблоном имени - PullRequest
4 голосов
/ 05 апреля 2019

У меня есть несколько векторных объектов в моей среде. Имена всех этих векторов содержат в себе строку «столбец». Например, у меня есть векторные объекты, которые называются column_1, column_2 и т. Д.

Как программно создать фрейм данных из всех этих векторов как столбцы фреймов данных без ввода имен векторов?

и я не хочу просто сказать:

data.frame(column_1, column_2, ...)

Существует ли какой-либо метод, использующий функции apply() или do.call()?

Я сделал это

vec_list <- grep("column", ls(), value=T)

но это не работает

data.frame(vec_list)

Я ожидаю, что на выходе будет один фрейм данных с векторными объектами в качестве столбцов фрейма данных.

1 Ответ

1 голос
/ 05 апреля 2019

Если у вас есть векторы неравной длины, то вы можете использовать что-то вроде этого -

Пример данных-

column_1 <- c("a","b","c")
column_2 <- c("a","b","c","d")
column_3 <- c(1,2,3,4,5,6)

> data.frame(lapply(mget(ls(pattern = "column_\\d+")), "length<-", max(lengths(mget(ls(pattern = "column_\\d+"))))))

  column_1 column_2 column_3
1        a        a        1
2        b        b        2
3        c        c        3
4     <NA>        d        4
5     <NA>     <NA>        5
6     <NA>     <NA>        6

Примечание - Решение, упомянутое @ akrun лучше всего, если у вас есть векторы равной длины.

data.frame(mget(ls(pattern = "column_\\d+")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...