перейти от строки к объектам

Допустим, у меня есть следующий синтаксис:

a1 <- c(2,3)
a2 <- c(6,8)
a3 <- c(1,9)

И так, при использовании cbind показывает следующее:

cbind(a1,a2,a3)
     a1 a2 a3
[1,]  2  6  1
[2,]  3  8  9

Однако синтаксис:

cbind(paste('a',1:3,sep=''))

не дает мне

     a1 a2 a3
[1,]  2  6  1
[2,]  3  8  9

Что я могу сделать, чтобы показать следующее с помощью вставки функции:

     a1 a2 a3
[1,]  2  6  1
[2,]  3  8  9

person Joseph    schedule 07.11.2017    source источник
comment
Что вы пытаетесь здесь сделать и почему бы просто не использовать data.frame и не назначать нужные имена столбцов?   -  person Tim Biegeleisen    schedule 07.11.2017
comment
Возможный дубликат R: создание фрейма данных со многими столбцами используя вставку(). Кроме того, матрица R_combining по имени   -  person Ronak Shah    schedule 07.11.2017


Ответы (2)


Если нам нужно получить несколько объектов из строк, используйте mget для возврата значения в list, а затем с помощью do.call cbind для matrix

do.call(cbind, mget(paste0('a',1:3)))
#     a1 a2 a3
#[1,]  2  6  1
#[2,]  3  8  9
person akrun    schedule 07.11.2017
comment
Я попробовал следующий код: a1 ‹- c(2,3); а2 ‹- с(6,8); а3 ‹- с(1,9); а4 ‹- с(6,8); кадр ‹- as.data.frame(cbind(a1,a2,a3,a4)); do.call(cbind, mget(paste0('frame$a',1:3))). Однако это не дает ответа, который мне нужен. Почему это? - person Joseph; 07.11.2017
comment
@Джозеф Это не объект. Это столбец в «рамке» объекта. Я не уверен в необходимости этого упражнения. Вы можете сделать lapply(paste0('frame$a',1:3), function(x) eval(parse(text=x))) - person akrun; 07.11.2017
comment
Очень признателен! - person Joseph; 07.11.2017

Если вы хотите изменить его на объект, вы можете создать матрицу:

m=matrix(c(a1,a2,a3),ncol=3)
colnames(m)=c("a1","a2","a3")
> m
     a1 a2 a3
[1,]  2  6  1
[2,]  3  8  9

> class(m)
[1] "matrix"
person mehakVT    schedule 07.11.2017