Как соединить несколько переменных в один вектор

#r

#r

Вопрос:

У меня есть переменные от c1 до c24 , всего 24 переменных. Я хочу сделать что-то вроде:

   b <- c(c1,c2,c3,c4,c5,c6,c7,c8,c9,
        c10,c11,c12,c13,c14,c15,c16,c17,
        c18,c19,c20,c21,c22,c23,c24)
  

Как я мог это сделать? В этом случае не работает использовать что-то вроде b <- c(c 1:c24) , R соединяет только два значения ( c1 и c24 ), но я хочу поместить все 24 значения в этот вектор.

Ответ №1:

Вы можете сделать это с lapply помощью и get :

 c1 <- c2 <- c3 <- c4 <- 1
unlist(                   ## convert from list to vector
    lapply(               
        paste0("c",1:4),  ## names of variables
        get)              ## retrieve variable by name
)
## [1] 1 1 1 1
  

В общем, было бы неплохо заглянуть в свой рабочий процесс и посмотреть, возможно ли вообще сгенерировать эти переменные в списке…

Комментарии:

1. Большое вам спасибо. Это очень полезно. Причина, по которой я получаю несколько этих переменных, заключается в том, что я использую цикл for для генерации многих переменных. Большое спасибо, это работает!

2. Или без lapply использования чего-то вроде unlist(mget(ls(pattern = "c\d ")))

3. @Дэвид, спасибо. ваш код также проработан. Однако последовательность выглядит примерно так: «c1, c10, c11 …», возможно ли, что порядок будет «c1, c2, c3, c4, ..»

4. Как вы генерируете переменные в циклах for? С assign помощью ? Если у вас есть цикл for (i in 1:24) ... , вы можете / должны сначала просто создать пустой вектор или список, а затем по ходу дела вводить значения в вектор / список.

5. @Tom Вы можете просто сделать unlist(mget(paste0("c",1:4))) , если не хотите использовать регулярное выражение