mengubah dari string menjadi objek [duplikat]

Katakanlah saya memiliki sintaks berikut:

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

Jadi, dengan penggunaan cbind, tampilan berikut ini:

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

Namun, sintaksnya:

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

tidak memberiku

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

Apa yang dapat saya lakukan untuk menampilkan yang berikut dengan fungsi tempel:

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

person Joseph    schedule 07.11.2017    source sumber
comment
Apa yang Anda coba lakukan di sini, dan mengapa tidak menggunakan data.frame saja dan menetapkan nama kolom yang Anda inginkan?   -  person Tim Biegeleisen    schedule 07.11.2017
comment
Kemungkinan duplikat R: membuat bingkai data dengan banyak kolom menggunakan tempel(). Juga, R_combining matriks berdasarkan nama   -  person Ronak Shah    schedule 07.11.2017


Jawaban (2)


Jika kita perlu mendapatkan beberapa objek dari string, gunakan mget untuk mengembalikan nilai dalam list dan kemudian dengan do.call cbind menjadi 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
Saya mencoba kode berikut: a1 ‹- c(2,3); a2 ‹- c(6,8); a3 ‹- c(1,9); a4 ‹- c(6,8); bingkai ‹- as.data.frame(cbind(a1,a2,a3,a4)); do.call(cbind, mget(paste0('frame$a',1:3))). Namun, itu tidak memberikan jawaban yang saya perlukan. Mengapa demikian? - person Joseph; 07.11.2017
comment
@Joseph Ini bukan sebuah objek. Ini adalah kolom dalam 'bingkai' objek. Saya tidak yakin tentang perlunya latihan ini. Anda dapat melakukan lapply(paste0('frame$a',1:3), function(x) eval(parse(text=x))) - person akrun; 07.11.2017
comment
Sangat dihargai! - person Joseph; 07.11.2017

Jika Anda ingin mengubahnya menjadi objek, Anda dapat membuat matriks:

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