#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)))
, если не хотите использовать регулярное выражение