Saya memiliki matriks (32X48).
Bagaimana cara mengubah matriks menjadi array dimensi tunggal?
Bacalah dengan 'scan', atau lakukan as.vector () pada matriks. Anda mungkin ingin mengubah urutan matriks terlebih dahulu jika Anda menginginkannya menurut baris atau kolom.
> m=matrix(1:12,3,4)
> m
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
> as.vector(m)
[1] 1 2 3 4 5 6 7 8 9 10 11 12
> as.vector(t(m))
[1] 1 4 7 10 2 5 8 11 3 6 9 12
mencoba c()
x = matrix(1:9, ncol = 3)
x
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
c(x)
[1] 1 2 3 4 5 6 7 8 9
Jika kita berbicara tentang data.frame, maka Anda harus bertanya pada diri sendiri apakah variabel-variabel tersebut berjenis sama? Jika demikian, Anda dapat menggunakan rapply, atau unlist, karena data.frames adalah list, jauh di lubuk hati mereka ...
sumber
array(A)
atauarray(t(A))
akan memberi Anda array 1-d.sumber
Dari
?matrix
: "Matriks adalah kasus khusus dari 'larik' dua dimensi." Anda cukup mengubah dimensi matriks / larik.sumber
Mungkin sudah sangat terlambat, bagaimanapun inilah cara saya mengubah Matriks menjadi vektor:
berharap itu akan membantu
sumber
Anda bisa menggunakan
as.vector()
. Sepertinya itu adalah metode tercepat menurut patokan kecil saya, sebagai berikut:Solusi pertama menggunakan
as.vector()
, yang kedua menggunakan fakta bahwa matriks disimpan sebagai array yang berdekatan dalam memori danlength(m)
memberikan jumlah elemen dalam matriksm
. Yang ketiga membuat contoharray
darix
, dan yang keempat menggunakan fungsi gabunganc()
. Saya juga mencobaunmatrix
darigdata
, tetapi terlalu lambat untuk disebutkan di sini.Berikut adalah beberapa hasil numerik yang saya peroleh:
Meratakan matriks adalah operasi umum dalam Pembelajaran Mesin, di mana matriks dapat mewakili parameter yang akan dipelajari, tetapi matriks menggunakan algoritme pengoptimalan dari pustaka umum yang mengharapkan vektor parameter. Jadi adalah umum untuk mengubah matriks (atau matriks) menjadi vektor seperti itu. Ini halnya dengan fungsi R standar
optim()
.sumber
Anda dapat menggunakan solusi Joshua tetapi saya pikir Anda membutuhkannya
Elts_int <- as.matrix(tmp_int)
Atau untuk loop:
z adalah vektor 1d.
sumber
Sederhana dan cepat karena larik 1d pada dasarnya adalah vektor
sumber
Jika Anda memiliki data.frame (df) yang memiliki banyak kolom dan Anda ingin melakukan vektorisasi, Anda dapat melakukannya
sebagai matriks (df, ncol = 1)
sumber